Sunday, March 29, 2009

【经验】Sogou 浏览器代理相关技巧整理

原创首发于 http://www.bitunion.org/thread-10132052-1-1.html


1 关于代理服务器
曾经尝试过跟sogou浏览器,但是后来放弃了
最开始也云把里边的pac脚本拿出来了(pac: proxy auto config 上网查查吧,用过ipcn.org的那个在线代理的肯定知道)
但是经测试,无效
于是也就没有继续尝试了
PAC脚本内容,来自 sogou浏览器根目录的 sogounet.dll


function FindProxyForURL(url, host){if(isPlainHostName(host)) return "DIRECT";if(!shExpMatch(url, "http*")) return "DIRECT";var ip = dnsResolve(host);// ipv6if(shExpMatch(ip, "*:*")) return "DIRECT"; // localif(isInNet(ip,"192.168.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"10.0.0.0","255.0.0.0")) return "DIRECT";else if(isInNet(ip,"172.16.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"169.254.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"127.0.0.0","255.0.0.0")) return "DIRECT";// cernetelse if(isInNet(ip,"58.154.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"58.192.0.0","255.240.0.0")) return "DIRECT";else if(isInNet(ip,"59.64.0.0","255.240.0.0")) return "DIRECT";else if(isInNet(ip,"113.54.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"114.212.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"114.214.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"115.24.0.0","255.252.0.0")) return "DIRECT";else if(isInNet(ip,"115.154.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"115.156.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"115.158.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"116.13.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"116.56.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"118.202.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"118.228.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"118.230.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"120.94.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"121.48.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"121.52.160.0","255.255.224.0")) return "DIRECT";else if(isInNet(ip,"121.192.0.0","255.252.0.0")) return "DIRECT";else if(isInNet(ip,"121.248.0.0","255.252.0.0")) return "DIRECT";else if(isInNet(ip,"122.204.0.0","255.252.0.0")) return "DIRECT";else if(isInNet(ip,"125.216.0.0","255.248.0.0")) return "DIRECT";else if(isInNet(ip,"162.105.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"166.111.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"202.4.128.0","255.255.224.0")) return "DIRECT";else if(isInNet(ip,"202.38.64.0","255.255.192.0")) return "DIRECT";else if(isInNet(ip,"202.38.140.0","255.255.254.0")) return "DIRECT";else if(isInNet(ip,"202.38.184.0","255.255.248.0")) return "DIRECT";else if(isInNet(ip,"202.38.192.0","255.255.192.0")) return "DIRECT";else if(isInNet(ip,"202.112.0.0","255.248.0.0")) return "DIRECT";else if(isInNet(ip,"202.120.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"202.127.216.0","255.255.248.0")) return "DIRECT";else if(isInNet(ip,"202.127.224.0","255.255.224.0")) return "DIRECT";else if(isInNet(ip,"202.179.240.0","255.255.240.0")) return "DIRECT";else if(isInNet(ip,"202.192.0.0","255.240.0.0")) return "DIRECT";else if(isInNet(ip,"203.91.120.0","255.255.248.0")) return "DIRECT";else if(isInNet(ip,"210.25.0.0","255.255.128.0")) return "DIRECT";else if(isInNet(ip,"210.25.128.0","255.255.192.0")) return "DIRECT";else if(isInNet(ip,"210.26.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"210.28.0.0","255.252.0.0")) return "DIRECT";else if(isInNet(ip,"210.32.0.0","255.240.0.0")) return "DIRECT";else if(isInNet(ip,"211.64.0.0","255.248.0.0")) return "DIRECT";else if(isInNet(ip,"211.80.0.0","255.248.0.0")) return "DIRECT";else if(isInNet(ip,"218.192.0.0","255.248.0.0")) return "DIRECT";else if(isInNet(ip,"219.216.0.0","255.248.0.0")) return "DIRECT";else if(isInNet(ip,"219.224.0.0","255.248.0.0")) return "DIRECT";else if(isInNet(ip,"219.242.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"219.244.0.0","255.252.0.0")) return "DIRECT";else if(isInNet(ip,"222.16.0.0","255.240.0.0")) return "DIRECT";else if(isInNet(ip,"222.192.0.0","255.240.0.0")) return "DIRECT";else return "PROXY " + host + ".local.acc.sogou.com:80; ";}


2 关于教育网限制

如果安装后的配置过程不选择启用那个代理功能,后来就没法再启用了
但是,注册表里
[code]HKEY_CURRENT_USER\Software\SogouExplorer\Accelerater[/code]
下边有两个值
VideoAccelerater
WebAccelerater
如果你的教育网加速功能不好使,那就把这个都设置成1

但是

sogou的ip检测有问题,尤其是学校这样的多出口的状态下,有时候会把代理加速功能给关掉


不过企鹅告诉了一个代理的使用方法:
命令行下,调用 SogouExplorer.exe -proxy 就会在本地开放一个端口,http代理,直接设置就行了

后来写bat,但是bat必须用 call 来调用,而不能直接开
内容如
reg add HKCU\Software\SogouExplorer\Accelerater /v VideoAccelerater /t REG_DWORD /d 1 /freg add HKCU\Software\SogouExplorer\Accelerater /v WebAccelerater /t REG_DWORD /d 1 /fcall "f:\Program Files\SogouExplorer\SogouExplorer.exe" -proxy

但是这个代理只是监听 127.0.0.1的8081端口,有时候会觉得很不方便

尝试着把监听的ip 127.0.0.1 改成 0.0.0.0,但是一直没有定位成功,于是放弃了


3 关于代理端口转发/共享
这是给*nix说的,或者说是有sshd的机器说的
因为昨天更新freebsd的虚拟机,结果嫌某个代理不好使,于是便想到了sogou的代理
但是这个只监听 127.0.0.1 的端口,怎么办?

SSH TUNNEL!

ssh -R 8080:127.0.0.1:8081 -l sskaje 192.168.181.130
连上去之后,ssh的那台服务器会开一个8080端口,所有发往这个端口的数据都会转发到本地的8081上
这样的话,
export http_proxy=http://localhost:8080cvsup -g -L 2 /etc/ports-supfile
于是就可以更新了


但是这个代理不是特别稳定,那没辙了



================ 更新 ==========================

4 关于sogou 浏览器 -proxy代理的监听IP的修改

之前想错了,居然忘记了代理不是在主程序里
于是刚才跟了下那个sogounet.dll
发现了几个127.0.0.1
都是push的
送进去的是同一个内存地址
hmm
修改
改成了 0.0.0.0

我的sogounet.dll版本是 1.0.1.105
数据的16进制 offset是 0x0007F9A4
注意
修改之后务必把后边的几位置成 0x00


==================================
UPDATE: Apr 15, 2009
临时扔到服务器上了,想测试一下修改后的sogounet.dll能扛多少连接
但是怕有BOF,于是 runas


reg add HKCU\Software\SogouExplorer\Accelerater /v VideoAccelerater /t REG_DWORD /d 1 /f
reg add HKCU\Software\SogouExplorer\Accelerater /v WebAccelerater /t REG_DWORD /d 1 /f
runas /user:services "E:\Progra~1\SogouExplorer\SogouExplorer.exe -proxy"
pause

加用户

但是,会报错
不影响使用

3 comments:

  1. 上面那个Bat是直接双击执行吗?能做成开机启动吗?

    ReplyDelete
  2. @甜咖啡: 不方便,当然,你可以手工把它扔进启动菜单,但是,call那行执行之后,cmd会卡在那儿,需要手工结束
    我是直接写个个批处理扔桌面上的
    开机之后,联网再点一下就行,也不麻烦

    ReplyDelete
  3. 请问能在最新的1.4版使用吗?
    还有我把call那行保存下来运行后提示“错误,命令参数太多”,怎么解决?谢谢

    ReplyDelete