小编yol*_*loz的帖子

如何使用python中的socket响应代理服务器中的"CONNECT"方法请求?

我目前正在使用httplib编写代理服务器,当我尝试连接到HTTPS网站(例如facebook和google)时,我的客户端向我发送了"CONNECT"请求,如下所示:

CONNECT www.google.co.il:443 HTTP/1.1\r\n
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0\r\n
Proxy-Connection: keep-alive\r\n
Connection: keep-alive\r\n
Host: www.google.co.il:443\r\n
\r\n
Run Code Online (Sandbox Code Playgroud)

我从互联网上拿了一个工作代理并把它打开,然后在wireshark上嗅探网络,对这个请求的响应应该是这样的:

HTTP/1.1 200 Connection established\n
Proxy-agent: Python Proxy/0.1.0 Draft 1\n
\n
Run Code Online (Sandbox Code Playgroud)

我注意到客户端将请求发送给代理本身,所以我决定使用socket,并以这种方式将响应发送到客户端:

if getmethod(clientreq) is "CONNECT":
    text="HTTP/1.1 200 Connection established\nProxy-Agent: THE BB Proxy\n\n"
    client.send(text)
Run Code Online (Sandbox Code Playgroud)

我真的希望处理这些"CONNECT"请求是解决方案,我的服务器最终会处理HTTPS请求,但事实并非如此,我发送给客户端的响应数据包甚至不会出现在wireshark上.

所以我的问题是:1."CONNECT"方法真正做到了什么?2.除了处理"CONNECT"方法请求以便与HTTPS服务器通信外,我还需要什么?

python sockets proxy httplib

5
推荐指数
1
解决办法
4509
查看次数

标签 统计

httplib ×1

proxy ×1

python ×1

sockets ×1