Google Hacking Test
前言
学习Google搜索,其目的是用于让自己得到更精准的信息,所以善用Google搜索对于信息收集、安全测试、查找答案等都有着非常大的帮助。而随着时间的变化Google对于语法的更新、规则都在改动,这些改动对于结果都有影响,所以使用前进行测试是非常有必要的。 查阅了诸多资料过后,将Google搜索的操作分为了三个等级,分别为基础搜索、布尔操作符、高级操作符,每个级别的都可以进行配合使用,有些组合起来能够让搜索更加精准,而有些则是不能进行组合。 同时这些搜索方式会与高级搜索设置中的功能重叠,但个人偏向使用语法对比高级搜索设置方便许多,所以后面的内容均使用语法,不会涉及到搜索设置等。 除此之外,还有诸多的网站可以获取到Google语法的途径,比如exploit-db是一个用于记录安全测试的Google语法数据库,这里面记录了非常多因配置失误操作的漏洞,如获取sql备份文件sql.bak等。Google Help提供常用的Google语法等。
影响搜索的因素
Google在搜索原理的一篇简单的介绍了会影响搜索结果的几个因素,分别为以下7个因素:
- 如果为中文,需要进行分词、语法等NLP技术的信息提取。
- 查询理解,这个步骤典型的就是修正错别字,比如你搜索“贝京市”,那么算法会将关键词进行修正为“北京市”,所以返回的内容中也是“北京市”相关的内容。这个步骤我没有找到具体的文献,但和步骤1是有较强的联系。
- 内容相关性,这个步骤典型的作用就是搜索网页中任何地方是否出现与关键词命中。
- 内容质量,这个步骤用于确定网页是否具备权威、专业等,除了常见的网站认证、知名度、访问量等,还有Google的基于网页链接的算法,如PageRank,这种算法类似于投票,越权威的网站被引用/超链接的次数越多。基于这些情况然后进行排序,将这些高质量的网站靠前输出。
- 网页可用性,这个步骤用于确定网页是否网页是否“优秀”,而Google是有一套公开的标准,典型的就是网页加载速度、适配各个访问的客户端、是否HTTPS、广告等。
- 上下文设置,这个步骤和自己的历史数据、设置有关系,比如你的历史搜索中多次搜索了“巴塞罗那对阿森纳”,当你搜索“巴塞罗那”的时候,可能更加想访问的是“巴塞罗那球队”而不是“巴塞罗那地区”,该部分的影响,可以通过Google搜索主页右下角设置中的“您在Google搜索中的数据设置”删除,或者直接使用无痕模式搜索可以消除该影响。 除了这个,地区也会导致你的搜索结果会有影响,在Google右下角设置中的“搜索设置”里面的“区域设置”可以验证,比如将该设置更改为美国,你搜索”football”则是返回的NFL橄榄球职业比赛联盟,而如果将地区设置为英国,返回的则是足球。
- 符号,在Google搜索中符号如(、。,/等都不会影响搜索结果,比如你搜索的是/中国北京/,那么结果中”中国(北京…“这样的结果也会匹配。
基础搜索
基础搜索是最常见的,里面包含了两种搜索方式:
- 关键词查询:关键词查询就是最常用的方式,直接输入关键词查询或者给出多个以空格间隔的关键词,如/中国北京/或者/中国 北京/。但需要注意的是使用关键词查询,会尽可能的分词和理解你的意图(影响搜索的因素中的步骤一),并尽可能的返回有关的内容,那么如/中国北京/,就有可能包含/中国北京/、/中国/、/北京/等结果返回。
- 准确查询:精确查询用双引号包裹一个或者多个关键词,与关键词查询不同之处在于精确查询并不会对关键词进行分词,而是原封不动的进行完整的匹配,所以你搜索/中国北京/,就有可能包含”中国北京”、“中国”、“北京”等结果返回。而搜索/“中国北京”/,则代表每一个结果都按照”中国北京”这个词进行完整的匹配,不会出现”中国”、“北京”等结果返回。 而如果精确搜索给出了多个关键词,如/“中国 北京”/,则这个中间的空格代表着顺序,说所以可以理解为查询的含义为在”中国”这个词后紧跟着”北京”这个关键词。
除了这两种搜索之外,还包含了几个符号:
- 通配符:通配符与程序中的通配符意义不一样,中文和英文搜索中这里的通配符代表的是一个词,比如/“北京市 故宫”/,将“京”替换为,也就是/“北市 故宫”/搜索,那么返回的结果中可能包含着如“北厦门市故宫”、“北秋田市故宮”等结果。如果将搜索改为/”市 故宫”/,那么你看见命中的关键词(红色标注)则为“太保市故宮”、“北京市故宫”等词。所以这说明通配符匹配的是一个词,而不是一个字,作用是尽可能的将一个词与前后的关键字进行组合成一个完整的词。
- 单字任意符:这个符号对于中文不太友好,中文下呈现的大多数能匹配到标点符号,而代表任意中文字符则不行,如搜索”湖北省”、“湖南省”等相关信息,所以语法为/“湖省”/,但是返回的则是”湖省”和”湖(省”。 而对于英文则是能替代任意字符,比如/“hacing”/,则能搜索到”hacking”等结果。
- 括号:Google搜索中对于括号是不敏感的,所以如 /北京((市/ 搜索中放置了一个中文一个英文的括号,都会正常返回“北京市”结果,而在精确操作中同样适用,即/“北京((市”/也能正确返回“北京市”的结果。 而基于括号这个操作,在搜索过程中就可以利用这个特性进行符合人类识别的分块构建查询,这个在于后面的布尔操作符和高级操作符上使用较多。
布尔操作符
布尔操作符可以使用于基础搜索以及高级操作符,非常灵活,对于信息筛选的帮助非常大,主要为以下三种:
- AND操作符:该操作符用+表示添加在关键词前。和代码中的不一样,代码中表示的是两者都必须具备,而在Google中,代表的是多添加一个关键词进行搜索,所以这个操作符没有太大的意义,如搜索/北京 +故宫/和/北京 故宫/结果相差不大,这是因为Google本身就会将所有关键词放进搜索条件中进行搜索。
- NOT排除操作符:该操作符用-表示添加在关键词前,与字面意义一样,用于排除某个条件,如关键词返回的结果等,比如想了解/故宫/的信息,但不想看旅游相关的信息,如同程,那么就可以使用该操作符搜索/故宫 -同程/。
- OR操作符:该操作符用|表示添加在两个关键词之间,代表的意义为两个关键词匹配任意一个匹配网页的内容都可以返回,比如/北京|重庆 /,那么将返回北京或者重庆相关的页面。 OR操作符可以用于关键词的多选组合,比如查看北京的地铁规划,那么”地铁”一词可能也叫”轨道”,“规划”一词也可能叫”计划”,那么这个时候就可以通过OR操作符搜索/“北京 地铁|轨道 规划|计划”/(也可以利用括号进行分组,即/“北京 (地铁|轨道) (规划|计划)”/),那么Google将尝试组合“北京地铁计划”、“北京轨道计划”、“北京地铁规划”、“北京轨道规划”等关键词搜索。
高级操作符
Google提供的搜索结果中,每条记录包含了六个部分,分别为标题、正文(简介)、URL、时间、缓存、文件类型,所有高级操作符也是围绕着这几个部分进行更为精细的控制,比如针对标题的搜索、正文的搜索、url的搜索等。 操作符有着严格的格式,高级操作符的语法为Operator:value,并且操作符、冒号、值之间不能有空格。如果不按照该格式,Google搜索将会把高级操作符当作关键词进行搜索,而查看自己是否有语法的错误,可以通过返回的结果中命中的红色关键词是否有异常,比如是否包含了高级操作符。 除此之外,前面精准搜索、布尔操作符都可以与高级操作符结合。
标题类
标题类操作符为intitle和allintitle,用于搜索网页的标题,意味着你关键词的搜索范围仅限于标题。
- intitle:用于搜索单个词是否包含在标题中,比如搜索/intitle:“北京市”/,如果你要查询多个关键词用于搜索标题符合的网页,那么可以使用多个intitle或者使用allintitle。
- allintitle:该高级操作符是会将后面所有的单词用于搜索标题,所以如intitle搜索标题中包含”北京市”和”故宫”的关键词,那么需要写两个intitle,而allintitle则只需要写一个/allintitle:“北京市” “故宫”/,但需要注意all开头的大部分高级操作符与其他操作符进行组合使用的时候会出现问题,所以如果你只是单独的搜索标题那么可以使用allintitle,而如果要与其他条件进行组合,那么建议使用intitle。
正文类
正文类操作符为intext和allintext,用于搜索网页的正文,意味着你的关键词的搜索范围仅限于正文/简介。
- intext:用于搜索单个词是否包含在正文中,比如搜索/intext:北京市/,如果你查询多个同样使用多个intext。
- allintext:用于搜索正文中的多个词,同样与allintitle用法一样。
URL类
URL类用于搜索网址,涉及的高级操作符有4个,分为:
- inurl和allinurl:inurl和allinurl的使用方法和标题类、正文类一致。
- site:site高级操作符用于搜索某个特定的域名或者域,比如只搜索微博关于故宫的信息,那么搜索语法为/site:weibo.com 故宫/。而搜索特定的域,则指的是com、cn、edu.cn等域名的后缀,如搜索所有的国内学校研究生招生的情况,则搜索语法为/site:edu.cn 研究生招生/。
- inanchor:inanchor高级操作符用于搜索超链接的文本。比如链接地址为weibo.com/xxx,而这个链接的文本则显示为“我的微博”,在html表示为<a href=”https://weibo.com/xxx”>我的微博</a>,inanchor就是用于搜索这个链接文本“我的微博”。 该操作符搜索返回的结果并非是网页中是否包含,而是直接返回该链接,比如“我的微博”这个链接存放在我的主页,Google并不会返回我的主页作为结果,而是将”我的微博”这条链接直接作为结果。
时间类
Google提供after和before用于搜索网页发布的时间,两个高级操作符的value格式为YYYY-MM-DD,两个操作符的value,只能单独设置年格式年或者完整日期格式年-月-日,而不能只提供年-月的格式。比如/北京市 before:2020-08/的2020-08就会作为关键词,而应该使用/北京市 before:2020-08-01/或者/北京市 before:2020/。 如果要限定时间范围,则可以同时使用after和before,但是需要注意同时使用,其中一个需要按照完整格式给出。如/北京市 after:2020 before:2021/就无法筛选时间,其他的时间结果也会存在结果当中,而应该使用/北京市 after:2020 before:2021-12-30/或者/北京市 after:2020-01-01 before:2021/。
缓存类
Google搜索提供用于查看缓存的搜索语法cache,而这个语法不能与其他语法共用,并且语法规则也较为严格,需要输入完整的url,但是大部分的时候是不需要使用这个语法的,而是自己通过搜索结果后,进行查询,而对于没有缓存的页面则会直接返回错误的页面。 缓存中会提供三种版本,完整版、纯文字版、源代码,完整版是Google提供了文字信息,而对于动态加载的数据、图片等则是通过调用原始网页的信息,也就是说你除了和Google服务器进行请求,还可能会和原网站进行请求资源,纯文字版和源代码则只会与Google进行请求,在信息搜集等时候,可以利用该方法避免暴露自己的信息,同时已删除掉的部分网页也可以通过缓存获取到相关的信息。 避免暴露信息的方式使用可以先获取到搜索结构的连接,然后通过替换url字符串直接访问纯文字版本http://webcache.googleusercontent.com/search?q=cache:5YLkdysWgnIJ:替换为完整url&strip=1 来访问目标网址的缓存,比如访问 上面的链接中里面的strip=1代表直接访问纯文本,所以这样你就不需要打开缓存页面然后再选择纯文本版,这样就只会和google服务器请求数据,而不会被目标网站记录。
文件类型操作符
Google搜索提供了一种以特定文件扩展名结尾的网页搜索语法filetype,这个语法可以方便我们去搜索像pdf/doc/xlsx等指定的文件后缀,这个功能在Google高级设置中能设置,但是高级搜索中仅仅只提供了部分的可选后缀,而通过语法你可以查询其他的特殊文件扩展名的网页,比如搜索包含故宫关键词的pdf文件/故宫 filetype:pdf/、搜索包含故宫的表格文件/故宫 filetype:xlsx/等。 但对于常用的文件类型Google会进行解析,但对于不太常用的文件类型Google则不会解析,常见 类型比如pdf类型即使不是网页pdf后缀,也能够识别出来,这是因为Google在抓去网页的时候会解析内容。比如/故宫 filetype:pdf -pdf/。 除此之外,https://filext.com/list/s 网站搜集了非常多的文件扩展名及用途。
关键词监控工具
Google搜索提供了一个用于推送关键词监听的工具”google alert”,这个工具可以去更改推送频率、来源、语言等设置,而且搜索框中也支持Google的基础搜索、布尔、高级操作符,当新的结果显示在Google搜索结果中的时候,将会将新信息推送至你设置的邮箱当中。 这个工具对于关键词热度、舆情监控是非常有用的。
参考资料
- 《Google Hacking 技术手册》
- https://www.indeed.com/career-advice/finding-a-job/google-search-operators
- https://kinsta.com/blog/google-search-operators/
- https://support.google.com/websearch/answer/2466433?hl=en&visitid=638009788259931665-4261219002&rd=1
- https://securitytrails.com/blog/google-hacking-techniques
- https://www.google.com/search/howsearchworks/how-search-works/ranking-results/
- https://www.google.com/alerts#
- https://developers.google.com/search/docs/advanced/guidelines/webmaster-guidelines?hl=zh-cn