如何使用python通过(tor)socks代理发出HTTP请求?

如何使用python通过(tor)socks代理发出HTTP请求?,python,http,proxy,socks,tor,Python,Http,Proxy,Socks,Tor,我正在尝试使用python发出HTTP请求。我尝试更改我的windows系统代理(使用inetcpl.cpl) 是不是给了我错误 回溯(最近一次调用):文件“”,第1行,在 response=urllib2.urlopen(请求)文件“C:\Python27\lib\urllib2.py”,第126行,在urlopen中 返回_opener.open(url、数据、超时)文件“C:\Python27\lib\urllib2.py”,第400行,打开 response=self.\u打开(req,

我正在尝试使用python发出HTTP请求。我尝试更改我的windows系统代理(使用
inetcpl.cpl

是不是给了我错误

回溯(最近一次调用):文件“”,第1行,在 response=urllib2.urlopen(请求)文件“C:\Python27\lib\urllib2.py”,第126行,在urlopen中 返回_opener.open(url、数据、超时)文件“C:\Python27\lib\urllib2.py”,第400行,打开 response=self.\u打开(req,data)文件“C:\Python27\lib\urllib2.py”,第423行,在\u open中 “未知打开”,req)文件“C:\Python27\lib\urllib2.py”,第378行,在调用链中 result=func(*args)文件“C:\Python27\lib\urllib2.py”,第1240行,未知\u打开 引发url错误('未知url类型:%s'%type')url错误:


似乎URLLIB2不支持SOCKS作为代理类型(如下所述:)。看看urllib+socks的例子。

我是OP。根据Tisho给出的答案,这对我很有效:

import urllib, urllib2

##Download SocksiPy - A Python SOCKS client module. ( http://code.google.com/p/socksipy-branch/downloads/list )
##Simply copy the file "socks.py" to your Python's lib/site-packages directory, and initiate a socks socket like this.
## NOTE: you must use socks before urllib2.
import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
socket.socket = socks.socksocket

url = 'http://ifconfig.me/ip'
request = urllib2.Request(url)
request.add_header('Cache-Control','max-age=0')
response = urllib2.urlopen(request)
print response.read()

可能重复:对我来说,它只适用于端口9150。Tor中可能有新的更新?最大年龄=0时,“缓存控制”有什么好处?9050和9150都不起作用。
import urllib, urllib2

##Download SocksiPy - A Python SOCKS client module. ( http://code.google.com/p/socksipy-branch/downloads/list )
##Simply copy the file "socks.py" to your Python's lib/site-packages directory, and initiate a socks socket like this.
## NOTE: you must use socks before urllib2.
import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
socket.socket = socks.socksocket

url = 'http://ifconfig.me/ip'
request = urllib2.Request(url)
request.add_header('Cache-Control','max-age=0')
response = urllib2.urlopen(request)
print response.read()