你真的会搜索么?

我们经常需要搜索。但是能高效搜索到自己所需要的东西,有点难。 我们希望能用google,但是现实只能接受某度,结果是,通常搜出来是一些无用的信息,甚至是广告。

这里我发现有两种比较好的搜索方式,适合广大程序猿们。当然这种方式也没啥技术含量,我只是总结了一下。

第一种是最大的同性交友网站,github最大的好处是,我们可以在github上看源码。

GitHub高级搜索

GitHub提供了简单搜索和高级搜索,高级搜索提供了很强的搜索方式,下面我们可以了解下GitHub都给我们提供了那些强悍的搜索功能。

1、in查询

示例:

代码语言:javascript
复制
Springboot in: name  查找项目名称中包含Springboot

SpringBoot in: name,description  查找项目名称、描述中包含SpringBoot

SpringBoot in: name,description,readme  查找项目名称、描述、readme中包含Springboot

2、:>或:<

格式 xxx关键词 stars/forks 通配符

示例:

代码语言:javascript
复制
Springboot stars:>5000  查找点赞数超过5000的项目

Springboot forks:>5000  查找forks数大于5000的项目

3、数字1..数字2

区间范围数字查询

示例:

代码语言:javascript
复制
SpringCloud stars:200..9999 forks:100..2000  查找stars在2009999,forks在1002000的项目

4、awesome加强搜索

awesome一般是用来收集学习、工具、书籍类相关的项目

示例:

代码语言:javascript
复制
awesome redis  搜索优秀的redis相关项目,包括框架、教程等

5、高亮显示某一行代码

  • 高亮显示1行:地址后紧跟#L行数
  • 高亮显示多行:地址后紧跟#L行数-L行数

示例:

6、项目内搜索

使用按键 t

使用 t 后如下图

image

可以看到目录结构有变化,都变为平铺显示,不用翻目录就可以直接查看

常用方法:

代码语言:javascript
复制
in:name mini-app           #仓库标题搜索含有关键字"mini-app"
in:descripton web #仓库描述搜索含有关键字"web"
in:readme node #README文件搜素含有关键字"node"
org:github #匹配github名下的仓库
stars:>3000 #stars数量大于3000的搜索仓库
stars:1000..3000 #stars数量大于1000小于3000的仓库
forks:>1000 #forks数量大于1000的搜索关键字
forks:1000..3000 #forks数量大于1000小于3000的搜索仓库
size:>=5000 #指定仓库大于5000k(5M)的搜索仓库
pushed:>2019-02-12 #发布时间大于2019-02-12的仓库
created:>2019-02-12 #创建时间大于2019-02-12的仓库
mirror:true(false) #是否是镜像仓库
archived:true(false) #是否是废弃的仓库
user:jack #用户名为"jack"的仓库
license:apache-2.0 #仓库的 LICENSE为"apache-2.0"
language:java #使用"java"语言的仓库
user:jack in:name web #组合搜索,用户名为"jack",且标题含有"web"的
topic:jekyll #匹配topic中含有关键字"jekyll"的仓库
topic:5 #匹配拥有5个topic的仓库
topic:>3 #匹配拥有3个以上topic的仓库
is:public #公开的仓库
is:private #匹配有权限的私有仓库

更多关于GitHub的高级搜索详见 https://help.github.com/en/articles/about-searching-on-github

google 查询:

如果能访问google, 可以直接用下面的方法,如果不能,某度也可以使用下面的方法。

Google Hacking基本语法

代码语言:javascript
复制
intext:     将返回所有在网页正文部分包含关键词的网页。

intitle:  将返回所有网页标题中包含关键词的网页。

cache:   搜索google里关于某些内容的缓存。

define:   搜索某个词语的定义。

filetype:  搜索指定的文件类型,如:.bak,.mdb,.inc等。

info:  查找指定站点的一些基本信息。

inurl:  搜索我们指定的字符是否存在于URL中。

Link:  link:xx.com可以返回所有和xx.com做了链接的URL。

site:  site:xx.com将返回所有和这个站有关的URL。

allintitle: 限制搜索结果仅是那些在网页标题里边包含了我们所有查询关键词的网页。(EVerything事件)

+  把google可能忽略的字列如查询范围。

-  把某个字忽略,例子:新加 -坡。

~  同意词。

.  单一的通配符。

*  通配符,可代表多个字母。

“”  精确查询。

注意事项
Google查询是不区分大小写的。(除布尔操作符OR,OR在表示布尔含义时一定要大写)
Google通配符;(仅代表搜索词组中的一个词。在一个词的开始或结尾使用星号和直接使用这个单词的效果相同。
短语搜索要带上单引号
32个单词的限制;(如一串英文单词,如果用部分替换单词,可以扩展搜索单词的数量)
最常用的:”关键字” ,双引号会使Google强制搜索包含关键字的内容
+和“”: +后面关键字;”关键字” (+后面不能有空格) ,双引号会使Google强制搜索包含关键字的内容
NOT 和 – : 从查询中忽略一个单词,-后不能跟空格
OR 和 | :查找搜索中的一个或另外一个关键字;在google处理搜索查询中,运算符之间没有优先级,一律从左往右
.句号可以匹配任意字符

文件类
一、目录列表的查找

目录列表能列出存在于一个web服务器上的文件和目录

查找目录列表

实例:

intitle:index.of 这里的休止符代表的是单个字母的通配符

实例:

intitle:index.of “parent directory”

intitle:index.of name size

二、(特定版本的)服务器

能被攻击者用来决定攻击web服务器最佳方法的一小段信息,就是确切的服务器版本

实例:

intitle:index.of “server at”

intitle:index.of “Apache/1.3.27 Server at”

三、扩展遍历技术

经常会出现web页面的备份文件,他们有泄露源码的倾向。常常在配置错误的时候出现这种问题,把php代码备份到不是以php结尾的文件中,比如bak

实例:

intitle:index.of index.php.bak

inurl:index.php.bak

四、配置文件的查找

配置文件的存在说明服务就在附近

实例:

filetype:conf inurl:firewall

注意:

1.除了配置文件名conf的使用,也可以组合其他的通用的命名规则来查找其他等价的命名规则

inurl:conf OR inurl:config OR inurl:cfg

五、日志文件的查找

日志文件中也记录着日志很多的敏感信息

日志文件也有一个默认的名字可以被我们用作基础的搜索,最常见的扩展名就是log了

实例:

filetype:log inurl:log

ext log log

filetype:log username putty

六、office文档

实例:

filetype:xls inurl:password.xls

filetype:xls username password email

常用的命令
查找网站后台

site:xx.com intext:管理

site:xx.com inurl:login

site:xx.com intitle:后台

查看服务器使用的程序

site:xx.com filetype:asp

site:xx.com filetype:php

site:xx.com filetype:jsp

查看上传漏洞

site:xx.com inurl:file

site:xx.com inurl:load

查找注射点

site:xx.com filetype:asp

site:tw inurl:asp?id= 这个是找台湾的

site:jp inurl:asp?id= 这个是找日本的

site:ko inurl:asp?id= 这个是找韩国的

这样,就能方便的查找到自己想要的技术文档了。