搜狗浏览器教育网加速所用代理协议初探

后注(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进制一个个字节的看!

文章分类 Programming, Python 标签: , , , , , , ,
16 comments on “搜狗浏览器教育网加速所用代理协议初探
  1. 说道:

    同样想邪恶的想法!

  2. dreamer说道:

    喔,强淫一个啊……

  3. Iven说道:

    这个恐怕要靠反编译了……

  4. Solon说道:

    Firefox用户: 强淫一个,精神上支持你的研究。期待你早日修成正果。

  5. Lily说道:

    不用这么麻烦,用Process Explorer仔细瞧瞧它的第二个进程的TCP/IP….

  6. PT说道:

    楼上一语点醒,Sogou浏览器专门在后台开了的proxy的进程,用-proxy参数启动的,加以利用即可!

  7. 小三说道:

    呵呵~Windows用户飘过!

  8. iCity说道:

    我也想用其他的浏览器使用搜狗的代理

  9. iCity说道:

    刚搜索到了解决使用搜狗代理的方法了,直接调用搜狗的加速进程就可以实现。

  10. Mike说道:

    挖一个坟

    似乎TAG是根据Host字段来的,然而host字段似乎完全可以无视,就随便写个www.google.com就可以,这个host字段和最终的发送的host字段是无关的。最终的字段永远是根据url里面的domain指定的:)

  11. michael说道:

    貌似现在最新的2.0.0.1049版本不是这样了吧?

  12. Xiaoxia说道:

    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.

  13. bush说道:

    居然兩年過去了,這個漏洞還沒被 gfw 發現?

  14. hello boy说道:

    我的一个学长用反编译弄出来了那个tag了
    他主页xiaoxia.org

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*