REFER : <<google hacking技术手册>>
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.4 使用Google URL
高级Google用户正是从Google的Web界面搜索域开始测试高级查询技巧的。他们不断地推敲查询关键字直到得到正确的结果为止。每个Google查询都可以用一个URL来指向搜索结果页面。Google的搜索结果页面不是静态的。它们会在你点击Search(搜索)按钮或者打开一个链接到结果页面的URL时动态创建的。通过Web界面提交的查询能够打开可以用简单的URL来表示的结果页面。例如,考虑查询ihackstuff。当你输入这个查询之后,Google立即转向类似于下面的URL:
www.google.com/search?q=ihackstuff
如果你收藏了这个URL并在以后打开它,或者在你的浏览器地址栏中输入这个URL时,Google会处理你对ihackstuff的搜索并返回相应的结果。此时,这个URL不仅是一个连接到结果列表的链接,而且还是Google查询的一种简洁、美观的表达形式。任何经验丰富的Google搜索用户都能看懂这个URL并知道查询的主题。这个URL也可以相当容易地进行修改。通过把ihackstuff改成iwritestuff,Google查询就会变为查找关键字iwritestuff。这个简单的例子阐明了Google URL在高级搜索中的用处。URL的快速改变能够让变化来得更快!
Google搜索背景知识
简化URL的结构
大多数情况所需要的唯一的URL参数是一个查询(q参数)。这样就可以构造出最简单的Google URL:www.google.com/search?q=google。
1.4.1 URL语法
为了完全理解URL的强大,我们需要掌握其语法。URL的第一部分——www.google.com/search——是Google的搜索脚本。我把这个URL以及它后面的问号称作基本部分(base)或者叫起始URL。如果浏览这个URL,你将看到一个美观的、空白页面。search后面的问号表示参数即将传递给搜索脚本。参数是指命令搜索脚本实际所做的事情。参数之间用“&”符号进行分隔,每个参数由一个变量名、等于号(=)和该变量的值所组成。基本语法如下所示:
www.google.com/search?variable1=value&variable2=value
这个URL包含了非常简单的字符。更为复杂的URL将包含某些必须由等价的十六进制代码表示的特定字符。现在我们先来说是一下十六进制代码。
1.4.2 特殊字符
十六进制是一种低级进制。人们终究会需要在查询URL中包含一个特殊字符。当遇到需要包含特殊字符的情况时,最好是让浏览器来帮助解决此问题。大多数新型浏览器都可以自动校正输入的URL,使用等价的十六进制代码来替换特殊字符和空格。如果你的浏览器支持这个功能,那么URL构造的工作就变成非常容易了。让我们一起来做一个简单的测试。在你的浏览器的地址栏中输入如下的URL,务必在i,hack和stuff之间使用空格:
http://www.google.com/search?q= hack stuff"
如果你的浏览器支持这种自动校正的功能,那么当你在地址栏中敲完回车键之后,这个URL应当会校正为www.google.com/search?q="i%20hack%20stuff",或者校正为与其类似的URL。注意到空格字符被替换成为%20。百分号意味着接下来的两个数字表示空格字符的十六进制值,即20。有些浏览器则会做进一步转换,即把双引号改为%22。
如果你的浏览器拒绝转换这些空格,查询将无法进行。有可能你的浏览器中有一个用来修改该操作的设置,你不妨尝试着修改一下,并使用新型的浏览器。Internet Explorer、Firefox、Safari和Opera都是不错的选择。
Google搜索背景知识
快速进行十六进制转换
你可以在UNIX或者Linux机器中运行man ASCII,或者在Google中搜索"ascii table"来快速地查看字符的十六进制编码。
1.4.3 组合各个部分
Google搜索URL的构造就像是拼接玩具一样。你可以从一个URL开始,然后按照你的需要来修改它以得到各种搜索结果。大多数情况下,紧接着URL基本部分的是通过Google Web界面所提交的查询。如果需要其他参数,你可以直接以任意的顺序把它们添加到URL中。如果你需要修改搜索中的参数,只需要修改参数的值并且重新提交查询即可。如果你需要删除一个参数,只需要在URL中把整个参数删除掉,然后重新提交查询。这个过程非常简单,你只需要在浏览器的地址栏中直接修改URL。所要做的只是简单地对URL进行修改,然后敲回车键。浏览器会自动地提取地址并转向一个更新后的搜索页面。你也可以通过浏览Google高级搜索页面(www.google.com/advanced_search,如图1.16所示),设置各种前面讨论过的参数来实现类似的结果,但是最后你将发现通过URL修改来完成快速的搜索调整更为迅速、简捷。
图1.16 使用Google高级搜索页面
一个Google查询URL可以包含许多不同的参数。根据你选择的选项以及你提供的搜索关键字,你会看到如表1.2中所列的部分或者全部的变量。可以根据需要对这些参数进行添加或者修改。
表1.2 Google的查询参数
变量
值
说明
q或者as_q
搜索查询
搜索查询
as_eq
搜索关键字
将从搜索中排除的关键字
start
0到最大结果数
用于显示结果页面。结果0是第一页结果页面的第一个结果
num maxResults
1到100
每页所显示的结果数
(最大为100)
filter
0或1
如果filter为0,则显示可能重复的结果
restrict
限定代码
限定位于某个特定的国家的结果
hl
语言代码
这个参数描述了Google用来显示结果所用的语言。可以设为你的母语。查找到的页面未经过翻译
lr
语言代码
语言限定。仅显示该种语言的页面
ie
UTF-8
Web搜索的输入编码。Google建议使用UTF-8
oe
UTF-8
Web搜索的输出编码。Google建议使用UTF-8
as_epq
搜索词组
这个值作为一个确切的词组进行提交。这样便不需要给词组加上引号
as_ft
i = 包含的文件类型
e = 排除的文件类型
用于包含或排除以as_filetype表示的文件类型
as_filetype
文件扩展名
包含或者排除由as_ft的值所指定的文件类型
as_qdr
all-所有的结果
m3 = 过去3个月
m6 = 过去6个月
y = 过去一年
查找在指定时间范围内更新的网页
as_nlo
最小数
查找as_nlo和as_nhi之间的数
as_nhi
最大数
查找as_nlo和as_nhi之间的数
as_oq
词的列表
查找这些词中间的至少一个
as_occt
any = 网页内的任何地方
title = 页面标题
body = 页面文本
url = 网页内的网址
links = 在网页的链接内
在指定位置查找搜索关键字
as_dt
i = 仅包含站点或者域
e = 不包含站点或者域
包含或者排除由as_sitesearch指定的域
as_sitesearch
域或站点
包含或者排除由as_dt指定的域或站点
safe
active = 启用安全搜索
off = 禁用安全搜索
使用或不使用安全搜索
as_rq
URL
查找与该URL类似的页面
as_lq
URL
查找链接到该URL的页面
rights
cc_*
用特殊的使用权限(政府、商业、非商业,等等)定位页面
一些参数的值为语言限定(lr)代码。lr的值命令Google只返回指定语言的页面。例如lr=lang_ar只返回以阿拉伯语所书写的页面。表1.3列出了lr的所有可能值:
表.13 语言限定代码
lr 语言代码
语言
lang_ar
阿拉伯语
lang_hy
亚美尼亚语
lang_bg
保加利亚语
lang_ca
加泰罗尼亚语
lang_zh-CN
中文(简体)
lang_zh-TW
中文(繁体)
lang_hr
克罗埃西亚语
lang_cs
捷克语
lang_da
丹麦语
lang_nl
荷兰语
lang_en
英语
lang_eo
世界语
lang_et
爱沙尼亚语
lang_fi
芬兰语
lang_fr
法语
lang_de
德语
lang_el
希腊语
lang_iw
希伯来语
lang_hu
匈牙利语
lang_is
冰岛语
lang_id
印度尼西亚语
lang_it
意大利语
lang_ja
日语
lang_ko
韩语
lang_lv
拉脱维亚语
lang_lt
立陶宛语
lang_no
挪威语
lang_fa
波斯
lang_pl
波兰语
lang_pt
葡萄牙语
lang_ro
罗马尼亚语
lang_ru
俄语
lang_sr
塞俄维亚语
lang_sk
斯洛伐克语
lang_sl
斯洛文尼亚语
lang_es
西班牙语
lang_sv
瑞典语
lang_th
泰国语
lang_tr
土耳其语
lang_uk
乌克兰语
lang_vi
越南语
变量hl可改变Google的消息和链接的语言。它既和限定结果页面语言的变量lr不同,也和把页面由一种语言翻译成另外一种语言的翻译服务不同。
图1.17显示出把变量hl的值设为DA(Danish,丹麦语)之后,搜索单词food的结果页面。注意到Google的消息和链接都是丹麦语,而搜索的结果却用英语显示。因为我们并没有要求Google限定或者修改查询。
图1.17 使用变量hl
为了更好地理解变量hl和lr之间的不同,可以尝试把查询food重新提交为一个lr搜索,如图1.18所示。注意URL的不同:此时的结果比之前少了许多,结果是以丹麦语所写,Google增加了一个“丹麦语网页”(Search Danish)的按钮,且Google的消息和链接语言为英语。不同于选项hl(表1.4列出了hl域的值),选项lr可以改变我们的搜索结果。我们要求Google只返回用丹麦语书写的页面。
表1.4 hl语言域的值
lr语言代码
语言
af
布尔语(南非荷兰语)
sq
阿尔巴尼亚语
am
阿姆哈拉语
ar
阿拉伯语
hy
亚美尼亚语
az
阿塞拜疆语
eu
巴斯克语
be
白俄罗斯语
bn
孟加拉语
bh
比哈里语
xx-bork
七嘴八舌(Bork, bork, bork!)
bs
波斯尼亚语
br
布列塔尼语
bg
保加利亚语
km
柬埔寨语
ca
加泰罗尼亚语
zh-CN
中文(简体)
zh-TW
中文(繁体)
co
科西嘉语
hr
克罗埃西亚语
cs
捷克语
da
丹麦语
nl
荷兰语
xx-elmer
Elmer Fudd语(动画里的用语)
en selected
英语
eo
世界语
et
爱沙尼亚语
fo
法罗语
tl
菲律宾语
fi
芬兰语
fr
法语
fy
弗里斯兰语
gl
加利西亚语
ka
格鲁吉亚语
de
德语
el
希腊语
gn
瓜拉尼语
gu
古吉拉特语
xx-hacker
黑客语
iw
希伯来语
hi
北印度语
hu
匈牙利语
is
冰岛语
id
印度尼西亚语
ia
拉丁国际语
ga
爱尔兰语
it
意大利语
ja
日语
jw
爪哇语
kn
卡纳达语
kk
哈萨克语
xx-klingon
格林岗语
ko
韩语
ku
库尔德语
ky
吉尔吉斯斯坦语
lo
老挝语
la
拉丁语
lv
拉脱维亚语
ln
林加拉语
lt
立陶宛语
mk
斯拉夫语
ms
马来语
ml
马拉雅拉姆语
mt
马耳他语
mr
马拉地语
mo
摩尔达维亚语
mn
蒙古语
ne
尼泊尔语
no
挪威语
nn
挪威语(尼诺斯克语)
oc
奥克斯坦语
or
奥里雅语
ps
普什图语
fa
波斯语
xx-piglatin
儿童黑话(Pig Latin密语)
pl
波兰语
pt-BR
葡萄牙语(巴西)
pt-PT
葡萄牙语(葡萄牙)
pa
旁遮普语
ro
罗马尼亚语
rm
罗曼什语(Romansh)
ru
俄语
gd
苏格兰盖尔语
sr
塞俄维亚语
sh
塞尔维亚克罗地亚语
st
塞索托语
sn
修纳语
sd
信德语
si
僧伽罗语
sk
斯洛伐克语
sl
斯洛文尼亚语
so
索马里语
es
西班牙语
su
巽他语
sw
斯瓦希里语
Google搜索背景知识
顽固的问题
hl的值是相当顽固的!这意思是说如果你在URL中更改了这个值,那么在以后的搜索中,它都一直是这个值而保持不变。把它改回去的最好的办法是通过Google使用偏好或者直接在URL中改变hl的代码。
变量restrict很容易和变量lr混淆,因为它限定你搜索特定的语言。但是,restrict和语言没有什么关系。这个变量能够把搜索结果限定在一个或几个国家,而国家的判断则是通过顶级域名(例如.us)和(或)通过服务器IP地址的地理位置。也许你会察觉到这种判断国家的方法有些不准确,是的,确实如此。尽管不准确,但是这个变量却相当有效。这次,让我们把搜索限定在JP(日语)中来搜索people,如图1.19所示。URL改变为包含限定值的值(参见表1.5),但是要注意的是,第二个结果来自www.unu.edu/,该URL的位置无从得知。正如工具栏中显示的,实际上,主机看起来像是位于日本。
图1.19 使用restrict来让结果更为精确
Google搜索背景知识
Google是如何判断地理位置的
很容易判断主机所处的地理位置。以下将使用host和whois来判定www.unu.edu所处的地理位置:
wh00p:~# host www.unu.edu
www.unu.edu has address 202.253.138.42
wh00p:~# whois 202.253.138.42
role: Japan Network Information Center
address: Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda
address: Chiyoda-ku, Tokyo 101-0047, Japan
country: JP
phone: +81-3-5297-2311
fax-no: +81-3-5297-2312
表1.5 restrict域值
国家(或地区)
限定代码
安道尔
countryAD
阿拉伯联合酋长国
countryAE
阿富汗
countryAF
安提瓜和巴布达
countryAG
安圭拉
countryAI
阿尔巴尼亚
countryAL
亚美尼亚
countryAM
荷兰安的列斯群岛
countryAN
安哥拉
countryAO
南极洲
countryAQ
阿根廷
countryAR
美属萨摩亚群岛
countryAS
奥地利
countryAT
澳大利亚
countryAU
阿鲁巴
countryAW
阿塞拜疆
countryAZ
波斯尼亚-黑塞哥维那
countryBA
巴巴多斯
countryBB
孟加拉国
countryBD
比利时
countryBE
布基纳法索
countryBF
保加利亚
countryBG
巴林
countryBH
布隆迪
countryBI
贝宁
countryBJ
百慕大
countryBM
文莱达鲁萨兰
countryBN
玻利维亚
countryBO
巴西
countryBR
巴哈马
countryBS
不丹
countryBT
布维群岛
countryBV
博茨瓦纳
countryBW
白俄罗斯
countryBY
伯利兹
countryBZ
加拿大
countryCA
科科斯(基林)群岛
countryCC
民主刚果
countryCD
中非共和国
countryCF
刚果
countryCG
布隆迪
countryBI
贝宁
countryBJ
百慕大
countryBM
文莱达鲁萨兰
countryBN
玻利维亚
countryBO
巴西
countryBR
巴哈马
countryBS
不丹
countryBT
布维群岛
countryBV
博茨瓦纳
countryBW
白俄罗斯
countryBY
伯利兹
countryBZ
加拿大
countryCA
科科斯(基林)群岛
(译者注:此处原书有重复,请责编确定删否)
countryCC
民主刚果
countryCD
中非共和国
countryCF
刚果
countryCG
瑞士
countryCH
科特迪瓦
countryCI
库克群岛
countryCK
智利
countryCL
喀麦隆
countryCM
中国
countryCN
哥伦比亚
countryCO
哥斯达黎加
countryCR
古巴
countryCU
佛得角
countryCV
圣诞岛
countryCX
塞浦路斯
countryCY
捷克共和国
countryCZ
德国
countryDE
吉布提
countryDJ
丹麦
countryDK
多米尼加
countryDM
多名尼加共和国
countryDO
阿尔及利亚
countryDZ
厄瓜多尔
countryEC
爱沙尼亚
countryEE
埃及
countryEG
西撒哈拉
countryEH
厄立特里亚
countryER
西班牙
countryES
埃塞俄比亚
countryET
欧盟
countryEU
芬兰
countryFI
斐济
countryFJ
福克兰群岛(玛尔维娜)
countryFK
密克罗尼西亚
countryFM
法罗群岛
countryFO
法国
countryFR
法属美特罗波利坦
countryFX
加蓬
countryGA
英国
countryUK
乔治亚
countryGD
法属奎亚那
countryGE
加纳
countryGF
直布罗陀
countryGH
格陵兰
countryGL
冈比亚
countryGM
几内亚
countryGN
瓜德罗普
countryGP
赤道几内亚
countryGQ
希腊
countryGR
南乔治亚和南桑威治
countryGS
危地马拉
countryGT
关岛
countryGU
几内亚比绍
countryGW
圭亚那
countryGY
中国香港
countryHK
赫德岛和麦克康纳群岛
countryHM
洪都拉斯
countryHN
克罗地亚(本地名:赫尔瓦次卡)
countryHR
海地
countryHT
匈牙利
countryHU
印度尼西亚
countryID
爱尔兰
countryIE
以色列
countryIL
印度
countryIN
英属印度洋领地
countryIO
伊拉克
countryIQ
伊朗伊斯兰共和国
countryIR
冰岛
countryIS
意大利
countryIT
牙买加
countryJM
约旦
countryJO
日本
countryJP
肯尼亚
countryKE
吉尔吉斯斯坦
countryKG
柬埔寨
countryKH
基里巴斯
countryKI
科摩罗
countryKM
圣基茨和尼维斯
countryKN
朝鲜
countryKP
韩国
countryKR
科威特
countryKW
开曼群岛
countryKY
哈萨克斯坦
countryKZ
老挝
countryLA
黎巴嫩
countryLB
圣卢西亚
countryLC
列支敦士登
countryLI
斯里兰卡
countryLK
利比里亚
countryLR
莱索托
countryLS
立陶宛
countryLT
卢森堡
countryLU
拉脱维亚
countryLV
大阿拉伯利比亚
countryLY
摩洛哥
countryMA
摩纳哥
countryMC
摩尔多瓦
countryMD
马达加斯加
countryMG
马歇尔群岛
countryMH
马其顿,前南斯拉夫共和国
countryMK
马里
countryML
缅甸
countryMM
蒙古
countryMN
中国澳门
countryMO
北马里亚纳群岛
countryMP
马提尼克
countryMQ
蒙特塞拉特
countryMS
马耳他
countryMT
毛里求斯
countryMU
马尔代夫
countryMV
马拉维
countryMW
墨西哥
countryMX
马来群岛
countryMY
莫桑比克
countryMZ
纳米比亚
countryNA
新喀里多尼亚
countryNC
尼日尔
countryNE
诺福克岛
countryNF
尼日利亚
countryNG
尼加拉瓜
countryNI
荷兰
countryNL
挪威
countryNO
尼泊尔
countryNP
瑙鲁
countryNR
纽埃
countryNU
新西兰
countryNZ
阿曼
countryOM
巴拿马
countryPA
秘鲁
countryPE
法属玻利尼西亚(French Polynesia)
countryPF
巴布亚新几内亚
countryPG
菲律宾
countryPH
巴基斯坦
countyPK
波兰
countryPL
圣皮埃尔和密克隆岛
countryPM
皮特凯恩
countryPN
波多黎各
countryPR
巴勒斯坦
countryPS
葡萄牙
countryPT
帕劳群岛
countryPW
巴拉圭
countryPY
卡塔尔
countryQA
留尼旺
countryRE
罗马尼亚
countryRO
俄罗斯联邦
countryRU
卢旺达
countryRW
沙特阿拉伯
countrySA
所罗门群岛
countrySB
塞舌尔
countrySC
苏丹
countrySD
瑞典
countrySE
新加坡
countrySG
圣路易斯
countrySH
斯洛文尼亚
countrySI
斯瓦尔巴特和扬马延岛
countrySJ
斯洛伐克(斯洛伐克共和国)
countrySK
塞拉利昂
countrySL
圣马力诺
countrySM
塞内加尔
countrySN
索马里
countrySO
苏里南
countrySR
圣多美和普林西比
countryST
萨尔瓦多
countrySV
叙利亚
countrySY
斯威士兰
countrySZ
特克斯和凯克斯群岛
countryTC
乍得湖
countryTD
法属南部领地
countryTF
多哥
countryTG
泰国
countryTH
塔吉克斯坦
countryTJ
托克劳群岛
countryTK
土库曼斯坦
countryTM
突尼斯
countryTN
汤加
countryTO
东帝汶
countryTP
土耳其
countryTR
特立尼达和多巴哥
countryTT
图瓦卢
countryTV
中国台湾
countryTW
坦桑尼亚
countryTZ
乌克兰
countryUA
乌干达
countryUG
美国本土外小岛屿
countryUM
美利坚合众国
countryUS
乌拉圭
countryUY
乌兹别克斯坦
countryUZ
梵蒂冈
countryVA
圣文森特和格林纳丁斯
countryVC
委内瑞拉
countryVE
英属维尔京群岛
countryVG
美属维尔京群岛
countryVI
越南
countryVN
瓦努阿图
countryVU
瓦利斯群岛和富图纳群岛
countryWF
萨摩亚
countryWS
也门
countryYE
马约特
countryYT
南斯拉夫
countryYU
南非
countryZA
赞比亚
countryZM
扎伊尔
countryZR