免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 854 | 回复: 0
打印 上一主题 下一主题

http搜索时候的情况 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-15 14:55 |只看该作者 |倒序浏览
最近做了一个英汉小翻译的东东,用的是VC,ADO + Access访问数据库,单词数据库是从金山打字通2002弄来的。后来想了想,想再加个在线翻译的功能,记得经常使用GOOGLE翻译网站的在线翻译,也蛮好用的。于是用Ethereal抓包工具抓了一下它的包,发现浏览器发出去的包格式如下:
POST /translate_t?langpair=en|zh-CN HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, application/QVOD, */*
Referer:
http://www.google.cn/language_tools
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip , deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727)
Host: translate.google.com
Content-Length: 46
Connection: Keep-Alive
cache-Control: no-cache
Cookie: __utmc=195145449; __utma=195145449.421253565.1205461371.1205592024.1205592348.11; __utmz=195145449.1205585337.9.8.utmccn=(referral)|utmcsr=hao123.com|utmcct=/ss/fy.htm|utmcmd=referral; __utmb=195145449
hl=zh-CN&ie=UTF-8&text=bad&langpair=en%7Czh-CN
        以前也曾接触过一点HTTP协议的知识,HTTP协议并不难,实际上只不过是互相发送些命令,这些命令都是ASCII码的字符串。不过也还总是有些地方模糊不清。现在就来做个笔记,把已经清楚的一些东西记下来,日积月累就好了:
        上面的这段HTTP协议请求包数据其实是由两部分组成的:分别是HTTP请求协议头和HTTP用户数据段。HTTP请求协议头和HTTP用户数据段之间用空行隔开。另外还有一个要注意的地方是每一行的结尾都有个回车换行符(VC中\r\n或者是VB中的vbCrlf),不然怎样叫做一行呢?呵呵。
POST /translate_t?langpair=en|zh-CN HTTP/1.1
方法 处理该HTTP请求的页面URL(相对路径) 协议版本号
POST表示用HTTP协议的POST方法,HTTP协议常用的方法还有GET,我们来看一个GET方法的HTTP请求包格式:
GET /search?hl=zh-CN&q=%E4%B8%AD%E5%9B%BD%E4%BA%BA&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=f HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, application/QVOD, */*
Referer:
http://www.google.cn/
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727)
Host:
www.google.cn
Connection: Keep-Alive
Cookie: PREF=ID=77ecc97ca62c7506:NW=1:TM=1205461328:LM=1205461328:S=J2uiHSrM9WZw7SBK; NID=8=Y8WD-oZWm6VqlKQPJn4NAaFJ6OZH9m7DHwGuYHa4NTczuMmCjOlnCn7WYxLAYJq-ZsGKGBSRWTZdQAwbt7zuzIPPxVqKp3zCb93z5GuHHxxblzwcTGQUmcMADxh7v3eX
        这是在
www.google.cn
搜索页面输入了“中国人”之后,浏览器发送出来的HTTP请求包。
GET /search?hl=zh-CN&q=%E4%B8%AD%E5%9B%BD%E4%BA%BA&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=f HTTP/1.1
方法 处理该HTTP请求的页面URL(相对路径) 协议版本号
        可以发现,
www.google.cn
搜索页面使用的GET方法(每个页面所使用的方法可以从该网页的源代码中查看到)。
        可以看到,两个方法之间的区别是GET方法不带HTTP用户数据段,GET方法的HTTP用户数据段包含在了这里
/search?hl=zh-CN&q=%E4%B8%AD%E5%9B%BD%E4%BA%BA&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=f
        解释一下上面这个URL:
        /search是处理该GET请求的页面地址,使用的是相对路径,?开始后面的就是发送的用户数据段了,其实就是该页面中各元素的值。它们之间用&分隔。
hl=zh-CN
q=%E4%B8%AD%E5%9B%BD%E4%BA%BA
btnG=Google+%E6%90%9C%E7%B4%A2
meta=
aq=f
        你可以用IE浏览器打开
www.google.cn
这个网页,然后点IE里的查看菜单,再点源文件,在打开的脚本文件中分别查找hl、q、btnG、meta、aq等字符串。可以发现,
  名字为hl的隐藏(type=hidden)输入框,值value为zh-CN
  名字为q的输入框,这个就是你在搜索时输入的那个框,初始值value为空,当你输入若干字符后点“Google 搜索”按钮,该控件的value值就为你输入的字符了。
  名字为btnG的提交按钮(submit),就是那个“Google 搜索”按钮。
  另外一个名字为btnI的提交按钮,“手气不错”按钮。
所有网页    名字为meta的单选钮(radio),值value为空。旁边还有几个单选钮就不列出了。
  以上这些控件都是包含在一个form中的,当用户单击这个form中的submit按钮时,这个form中的数据(各控件的值)就会被浏览器提交到action="/search"这个页面去处理。
        好了,我们理解了GET方法,回到我们POST中来。跑题了,呵呵。
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash,
application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, application/QVOD, */*
接收的数据类型,格式为:主类型/子类型
Referer:
http://www.google.cn/language_tools
应该是从哪个页面转向过来的(也就是提交该HTTP请求的页面)
Accept-Language: zh-cn
接收方使用的语言,zh-cn应该代表简体中文
Content-Type: application/x-www-form-urlencoded
网页内容(用户数据段)所属的类型
Accept-Encoding: gzip, deflate
接收方的数据编码方式,gzip经过压缩的
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727)
用户浏览器类型
Host: translate.google.com
主机名字
Content-Length: 46
网页内容(用户数据段)的长度
Connection: Keep-Alive
连接状态,Keep-Alive保持连接
cache-Control: no-cache
不使用cache
Cookie: __utmc=195145449; __utma=195145449.421253565.1205461371.1205592024.1205592348.11; __utmz=195145449.1205585337.9.8.utmccn=(referral)|utmcsr=hao123.com|utmcct=/ss/fy.htm|utmcmd=referral; __utmb=195145449
Cookie内容
        (注意:以上这些都是我个人的理解,并不一定正确。需要正确的解释请参考HTTP协议的介绍。)
        最关键的还是用户数据段这地方,改动一下就可以模拟IE浏览器POST数据到GOOGLE翻译网站了。
hl=zh-CN&ie=UTF-8&text=bad&langpair=en%7Czh-CN
hl=zh-CN
ie=UTF-8
text=bad
langpair=en%7Czh-CN
  名字为hl的隐藏(type=hidden)输入框,值value为zh-CN
  名字为ie的隐藏(type=hidden)输入框,值value为UTF8
bad  名字为text的文本框(textarea),就是我们输入需要翻译的原文的那个框
阿拉伯文到英语
......
英语到中文(简体)
......
名字为langpair的列表组合框,当我们选择英语到中文(简体)的时候它的值value就等于en|zh-CN了,上面langpair=en%7Czh-CN这里的%7C就是|的百分号加十六进制编码。
文章出处:
http://www.diybl.com/course/3_program/c++/cppsl/2008320/105874_2.html
文章出处:
http://www.diybl.com/course/3_program/c++/cppsl/2008320/105874.html


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/15071/showart_1721870.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP