如何穿透CMWAP代理封锁(收集)

移动的gprs服务有两种接入方式,一种为cmnet,另一种为cmwap。前者没有限制,费用较高;后者通过移动的http代理上网,支持的协议有限,而且还通过限制浏览器类型、端口等方式来防止在pc通过gprs上网,同时其返回的内容也专门为了兼容手机浏览器,部分xhtml网页会加一个vnd|xhtml的头,这样如果网页有一点xml错误,普通浏览器就无法解析。网上有好多文章介绍如何修改浏览器的user-agent,来绕过移动限制。

至于xml错误问题,目前比较好的解决方法就是在客户端同移动的http代理之间再加一个代理服务器,此代理的作用就是修改客户端请求中的user-agent,并修正移动代理返回内容中的错误文件头,这样就基本绕过了移动的限制。

有人写过类似的程序,但用起来还是有些问题,过年回家上不了网,只能通过手机拨号,所以自己动手用写了一个http代理,浏览网页,登陆msn、qq等基本没问题。

更新:我前后试过三次,第一次测试结果,10.0.0.172只能connect 443端口,第二次是除了80,其它全部都可以,第三次结果跟第一次一样。那如果你想保证socks服务能够稳定工作的话,还是指定一个运行在443端口的socks代理服务器为好。

背景知识不讲了,可参考我前一篇文章。先来看一看移动的cmwap代理服务器(10.0.0.172:80)到底有哪些限制。限制浏览器类型这个前面讲过了,再一个就是对一些端口的封锁,它支持CONNECT,通常我们发送类似CONNECT Server:Port HTTP/1.0的请求来实现http tunnel从而提供socks代理服务,但大部分地区的移动只能connect 443端口,也有部分地区无此限制,这样就导致许多http2socks软件工作不正常。

绕过此限制的方式就是connect一个运行在443端口的socks服务器了,虽然条件比较苛刻,但这是我所想到的唯一方式了。

具体实现细节:

假如我们有一个socks代理服务器,端口是443,ip为202.194.73.1。首先建立到10.0.0.172:80的连接,然后发送类似请求:
CONNECT 202.194.73.1:443 HTTP/1.1\r\n
User-Agent: UGiA CMWAP Proxy\r\n
\r\n

如果服务器返回类似Connection established 200,那么隧道就建立成功了,这时候再进行客户端和服务器端的数据转发工作。

到此这个软件的功能基本完成了,剩下的就是在稳定性以及性能方面的改进了。2.0版的功能点如下:
1.支持http及socks代理服务,socks服务兼容socks5、socks4以及socks4A。
2.不需要修改User-Agent,解决xml错误及乱码问题。
3.可以将此软件当作一个普通的http2socks的代理服务器使用,只需要在配置文件里把类型改为非cmwap,并指定一个http代理服务器。
4.如果指定了二级socks代理服务器,可支持单纯的socks数据转发。
5.空闲超过一段时间会自动连接,防止断线。
6.自动检测当前网络限制。


因为都需要通过移动的http代理出去,所以socks服务不支持udp转发,当然也不支持bind。大部分地区的cmwap网络限制不同,甚至每次拨号之后也不相同(直接导致我前面的文章改了三次…),大部分不能connect 443以外的端口,所以会导致socks服务受到很大限制,软件启动时会自动检测是否可连接443以外的端口,如果显示limited,那就需要指定一个运行在443端口的公网socks代理服务器来突破限制了,这样这边就只作数据转发工作。无论如何,还是建议在qq中使用这个软件提供的socks代理服务,可防止假死。


你可能感兴趣的:(如何穿透CMWAP代理封锁(收集))