首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过SOCKS代理与python / http.client连接?

如何通过SOCKS代理与python / http.client连接?
EN

Stack Overflow用户
提问于 2017-07-03 21:11:53
回答 1查看 2.5K关注 0票数 1

通常,当使用httplib (python2.x)或http.client (python3.x)时,您将设置一个连接并发出如下请求:

代码语言:javascript
复制
from http.client import HTTPConnection
from urllib.parse import urlparse, urlencode

url = urlparse("http://final.destination.example.com:8888/")
conn = HTTPConnection(url.netloc)
request_path = "%s?%s" % (url.path, url.query)
conn.request("POST", request_path, post_data)

(注意这个示例代码有python3.x导入)

出于性能原因,我希望使用http.client,但我也希望使用SOCKS代理来远程访问集群。

有没有办法在httplib/http.client中使用SOCKS代理?

EN

回答 1

Stack Overflow用户

发布于 2017-07-03 21:18:21

我在这里回答我自己的问题,希望下一个在这种情况下的人能够找到解决办法。

第一次安装PySocks时:

代码语言:javascript
复制
pip install PySocks

然后,您需要在实例化您的HTTPConnection并通知它它将使用代理之后手动设置SOCKS代理:

代码语言:javascript
复制
from http.client import HTTPConnection
from urllib.parse import urlparse, urlencode

import socks

url = urlparse("http://final.destination.example.com:8888/")

conn = HTTPConnection('127.0.0.1', 9000) # use socks proxy address
conn.set_tunnel(url.netloc, url.port) # remote host and port that you actually want to talk to
conn.sock = socks.socksocket() # manually set socket
conn.sock.set_proxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9000) # use socks proxy address
conn.sock.connect((url.netloc, url.port)) # remote host and port that you actually want to talk to

request_path = "%s?%s" % (url.path, url.query)
conn.request("POST", request_path, post_data)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44893913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档