首先,我了解还有其他模块,如请求更适合和更简单的使用,但我想使用套接字模块来更好地理解HTTP.
我有一个简单的脚本,执行以下操作:
客户—> HTTP代理—>外部资源(GET Google.com)
我可以连接到HTTP代理,但是当我将google.com的GET请求标头发送到代理时,它根本不会为我提供任何响应.
#!/usr/bin/python
import socket
import sys
headers = """GET / HTTP/1.1
Host: google.com
"""
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
" + "Host: {2}: {3}
").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)