python多线程实现http代理
文章要求
1.py socket模块
socket模块接触后很简单,我实现的是阻塞性的套接字。
需要了解到,连接套接字,监听套接字,和套接字accept()方法的返回值是元组
数据传递过程sock.recv(1024)
,sock.send()
也不需要转换编码,直接以b"二进制流"
传输
2.py threading模块
threading模块用起来也很简单,threading.Thread(target=函数名,args=(参数1,参数2)).start()
直接一行代码就开启了一个新的线程,丢给它运行一个函数。
3.环境搭建
3.1设置代理
我用的是win10的机子,IP是192.168.1.10,设置代理,把浏览器的流量都转到8080端口上。
使用时,打开使用代理服务器,点击保存。就成功设置了代理。
3.2搭建http简单服务器
整个虚拟机,用iis7搭建http服务器,IP为192.168.1.12
代码分析
1.完整代码
import socket
import threading
REMOTE_IP = '192.168.1.12'
REMOTE_PORT = 80
LOCAL_IP = '192.168.1.10'
LOCAL_PORT = 8080
BUFF_SIZE = 2048
def tcp_mapping_worker(conn_receiver, conn_sender):
while True:
try:
data = conn_receiver.recv(BUFF_SIZE)
except Exception:
print(