首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PySocks代理编辑失败

PySocks代理编辑失败
EN

Stack Overflow用户
提问于 2016-01-27 19:35:20
回答 1查看 1.7K关注 0票数 0

我仍然尝试创建imap\pop3 3代理客户端。第一个尝试是在PHP here上。现在,我对python也做了同样的尝试。

我找到了一个适合我的answer,所以我的代码是基于stackowerflow answer的,它适用于没有身份验证的代理:

代码语言:javascript
复制
class SocksIMAP4SSL(IMAP4_SSL):
    def open(self, host, port=IMAP4_SSL_PORT):
        self.host = host
        self.port = port
        self.sock = create_connection(dest_pair=(host, port), proxy_type=PROXY_TYPE_HTTP, proxy_addr=PROXY_IP,
                                      proxy_port=PROXY_PORT, proxy_rdns=True, proxy_username=PROXY_AUTH_LOGIN,
                                      proxy_password=PROXY_AUTH_PASS)
        # self.sock = socket.create_connection((host, port))
        self.sslobj = ssl.wrap_socket(self.sock, self.keyfile, self.certfile)
        self.file = self.sslobj.makefile('rb')

但是,如果我在身份验证中使用代理,它总是会因为原因而失败:

代码语言:javascript
复制
socks.HTTPError: 407: Proxy Authentication Required

代理类型: basic。登录和密码都是正确的。我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-29 18:14:34

我使用了https://github.com/Anorov/PySocks,但它不支持HTTP代理的基本身份验证。几行代码解决了这个问题:

代码语言:javascript
复制
http_headers = [
    b"Connect %s:%s HTTP/1.1" % (addr.encode('idna'), str(dest_port).encode()),
    b"Host: %s" % dest_addr.encode('idna')
]

if username and password:
    http_headers.append(b"Proxy-Authorization: basic %s" % str(b64encode("%s:%s" % (username, password))))

http_headers.append(b"\r\n")

self.sendall(b"\r\n".join(http_headers))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35046476

复制
相关文章

相似问题

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