后注(09-04-14):其实Sogou浏览器的代理功能是独立的,可以单独利用,分析其协议意义不大,见通过Wine使用Sogou浏览器的教育网加速代理
搜狗浏览器的教育网加速功能,对n多在学校使用校园网的用户来说可是福音,更别提其附带的翻墙功能。自从搜狗浏览器发布那天起,我就对其所用的代理服务器虎视眈眈:要是能在其他浏览器使用,多好啊……
早前,用Wireshark嗅探搜狗连接加速代理的数据包,找到如219.234.81.(64/65/)66、219.234.81.(35/36/37)等几个服务器,看其发送的数据包,好像和HTTP代理差不多!试着将其加入Firefox的代理……果然吃的是闭门羹:Try Sogou Explorer now!
也看到搜狗发出的HTTP GET带有一些私有头部X-Sogou-XXXX的,估计有一些校验机制,就暂时放下了。
这几天校园网特别不稳定,又打起搜狗的主意。
感谢Python能够用这么简单的语句给我提供实验的环境,现在已经肯定下面的代码能够通过搜狗的代理访问到google的主页!程序输出的确实是Google的HTML代码!
#!/usr/bin/python import socket, sys s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect( ("219.234.81.66", 80) ) data = "GET http://www.google.com/ HTTP/1.1\r\nHost: www.google.com\ \r\nX-Sogou-Auth: 438892784B65C0ADAB8B42F1BF6E7984/91/1ac66c2d240157be\ \r\nX-Sogou-Tag: 82cfc55e\r\nX-Sogou-Timestamp: 49a7fa22\r\n\r\n" s.sendall(data) while 1: buf = s.recv(4096) if not len(buf): break sys.stdout.write(buf) |
然而,现在高兴还为时过早,这个程序我发送的HTTP头信息如下:
GET http://www.google.com/ HTTP/1.1
Host: www.google.com
X-Sogou-Auth: 438892784B65C0ADAB8B42F1BF6E7984/91/1ac66c2d240157be
X-Sogou-Tag: 82cfc55e
X-Sogou-Timestamp: 49a7fa22
已经确定这三个X-Sogou是必须的头验证,缺一不可,改掉其中任意一个的值,也不行。
其中X-Sogou-Auth的值一直不变,估计和系统、硬件有关。
X-Sogou-Tag一直在变,摸不清头绪。
X-Sogou-Timestamp似乎如其名字,和时间有关,每次发出都大概和秒表一样加一。
…… …… …… …… …… …… 接下来做了以下的猜测:
X-Sogou-Timestamp似乎是一个数值,按16进制输入计算器,将其转换成10进制数字,得到1235745314……恩,想起之前外国很多IT媒体都在兴奋的报道,情人节那天,Sat Feb 14 07:31:30 CST 2009——的时候的Unix时间值是1234567890,难道这个就是当前的Unix时间值?马上验证:
>>> time.ctime(1235745314)
‘Fri Feb 27 22:35:14 2009’
强大!果然是刚才的时间!貌似看到希望的曙光了!
…… …… …… …… …… …… ……
然而,过了n久,运行刚才的python脚本,依然可以正常输出!看来代理服务器并没有校验Timestamp的值是否合理……那么唯一的解释,就是用Timestamp来做验证的密码了……
观察X-Sogou-Tag,刷新一个网页往往会发出很多个连接,包括图片、css文件什么的,发现同一秒中发出的连接,Timestamp值相同,Tag的值也相同!Tag由Timestamp决定!
…… …… …… …… …… …… ……
继续观察,发现Timestamp相同,但是域名不同的网站,Tag也不同,X-Sogou-Domain也不定时出现……
…… …… …… …… …… …… ……
哎,可恶的Tag,貌似Out of my reach了……看来自己还是当不成黑客,密码学领域知识很空白……对数字也没那个敏感……
收获就是对HTTP头的结构了解……上网查过,居然没有一点资料详细说!害我在wireshark里面对着那些16进制一个个字节的看!
同样想邪恶的想法!
喔,强淫一个啊……
这个恐怕要靠反编译了……
Firefox用户: 强淫一个,精神上支持你的研究。期待你早日修成正果。
……鉴于现在翻墙软件铺天盖地,还是先看看了,哈哈
不用这么麻烦,用Process Explorer仔细瞧瞧它的第二个进程的TCP/IP….
楼上一语点醒,Sogou浏览器专门在后台开了的proxy的进程,用-proxy参数启动的,加以利用即可!
呵呵~Windows用户飘过!
我也想用其他的浏览器使用搜狗的代理
刚搜索到了解决使用搜狗代理的方法了,直接调用搜狗的加速进程就可以实现。
挖一个坟
似乎TAG是根据Host字段来的,然而host字段似乎完全可以无视,就随便写个www.google.com就可以,这个host字段和最终的发送的host字段是无关的。最终的字段永远是根据url里面的domain指定的:)
貌似现在最新的2.0.0.1049版本不是这样了吧?
i wrote a piece of code to make X-Sogou-Tag. it’s a hash about Timestamp+Host+”SogouProxySogouExplorerProxy”. it’s not crc32 as it was what i had guessed at first. instead, it’s a complicated hash function i found with OD.
居然兩年過去了,這個漏洞還沒被 gfw 發現?
两年前的gfw没那么厉害的说。
我的一个学长用反编译弄出来了那个tag了
他主页xiaoxia.org