原理(以访问百度为例)
HTTP请求
客户端访问目标 http://www.baidu.com:80
收到客户端请求为:
b'GET http://www.baidu.com/ HTTP/1.1\r\nHost: www.baidu.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36\r\nAccept-Encoding: gzip, deflate\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\nConnection: close\r\nUpgrade-Insecure-Requests: 1\r\nAccept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7\r\nProxy-Authorization: Basic YWJjOnNhZA==\r\n\r\n'
请求可以分成以下内容
#请求类型 GET|POST|PUT|DELETE等
GET
#访问的url
http://www.baidu.com/
#HTTP协议版本号
HTTP/1.1
#HOST如果没写默认80
Host: www.baidu.com:80
#请求头
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36\r\nAccept-Encoding: gzip, deflate\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\nConnection: close\r\nUpgrade-Insecure-Requests: 1\r\nAccept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
#验证信息 用户名:密码 使用base64加密 如此实例为 abc:sad->YWJjOnNhZA==
Proxy-Authorization: Basic YWJjOnNhZA==
#结束符
\r\n\r\n
注:HTTP代理出了验证部分,其余和普通http请求一致
HTTPS请求
客户端访问目标 https://www.baidu.com
收到客户端请求为:
b'CONNECT www.baidu.com:443 HTTP/1.0\r\nProxy-Authorization: Basic YWJjOnNhZA==\r\n\r\n'
请求可以分成以下内容
#代表是https的http代理
CONNECT
#HOST如果没写默认443
www.baidu.com:443
#HTTP协议版本号
HTTP/1.0
#验证信息 用户名:密码 使用base64加密 如此实例为 abc:sad->YWJjOnNhZA==
Proxy-Authorization: Basic YWJjOnNhZA==
#结束符
\r\n\r\n