I am LAZY bones ? all linux

python中的socket代理

说socket代理之前,先来说说http代理,python的urllib2是自带http代理功能的,可以用如下代码实现:

proxy_handler = urllib2.ProxyHandler({'http' : 'http://地址:端口'})
opener = urllib2.build_opener(proxy_handler, urllib2.HTTPHandler)
urllib2.install_opener(opener)

如此,接下来用urllib2来urlopen的时候,就会自动使用这个代理了。

但是,在我们疯狂的天朝,有时候,http代理并不能满足要求,也许你还想使用更底层的socket代理,于是python里似乎就没有直接的方法了(python3不知道有没有内置,未研究)。这时候,你可能需要这个包:SocksiPy – A Python SOCKS module,下载解压以后,除了文档也就一个 socks.py 文件,很方便使用,给出示例代码:

import socks, socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "地址", 端口)
socket.socket = socks.socksocket

接下来,你就可以照常使用socket了,一切都会悄悄地通过代理出去的~

最后修改时间: 2010年05月22日 23:15

本文章发表于: 2010年05月20日 19:21 | 所属分类:编程相关. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

5 个评论 关于: “python中的socket代理”

  1. shellex 在 2010年05月20日 19:25 说:回复

    用 pycurl 的话可以直接支持sock5代理

    • bones7456 在 2010年05月20日 19:30 说:回复

      pycurl还是得装第三方包,而且还是不够底层啊~

  2. Tweets that mention I am LAZY bones ? : python中的socket代理 -- Topsy.com 在 2010年05月20日 22:17 说:回复

    […] This post was mentioned on Twitter by 骨头 and Kars, 晓墨墨. 晓墨墨 said: [GR分享] python中的socket代理 – http://goo.gl/051b […]

  3. MeaCulpa 在 2010年05月29日 08:23 说:回复

    这倒是很有用…考虑武装上我的bot啥的…

  4. ym 在 2012年07月14日 01:20 说:回复

    hi,这东西能用来翻墙吗

发表评论