【发布时间】:2015-12-23 21:15:06
【问题描述】:
首先,我知道还有其他模块(例如 Requests)更适合且更易于使用,但我想使用 socket 模块来更好地理解 HTTP。
我有一个执行以下操作的简单脚本:
客户端 ---> HTTP 代理 ---> 外部资源 (GET Google.com)
我可以连接到 HTTP 代理,但是当我将 google.com 的 GET 请求标头发送到代理时,它根本没有为我提供任何响应。
#!/usr/bin/python
import socket
import sys
headers = """GET / HTTP/1.1\r\n
Host: google.com\r\n\r\n"""
socket = socket
host = "165.139.179.225" #proxy server IP
port = 8080 #proxy server port
try:
s = socket.socket()
s.connect((host,port))
s.send(("CONNECT {0}:{1} HTTP/1.1\r\n" + "Host: {2}: {3}\r\n\r\n").format(socket.gethostbyname(socket.gethostname()),1000,port,host))
print s.recv(1096)
s.send(headers)
response = s.recv(1096)
print response
s.close()
except socket.error,m:
print str(m)
s.close()
sys.exit(1)
【问题讨论】:
标签: python sockets http networking proxy