# ProxyForwad **Repository Path**: samge007/ProxyForwad ## Basic Information - **Project Name**: ProxyForwad - **Description**: 使用docker+mitproxy搭建二次代理跳板 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-04-24 - **Last Updated**: 2022-04-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 使用docker+mitmproxy搭建二次代理跳板 主要功能是:使用mitmproxy搭建一个固定的ip:端口作为跳板(转发器),爬虫可直接设置跳板代理,由跳板代理进行二次转发&进行实际代理请求。满足两个需求点: - 1、爬虫只想设置固定代理ip地址跟端口实现多代理切换; - 2、结合内网穿透,在外网通过跳板代理转发,从而使用内网的代理ip池; #### 1、构建docker镜像-基础环境,减少后续镜像构建时安装pip install的耗时 ``` docker build -t samge/proxy-forward:b1.20220424.1 -f Dockerfile_env . ``` #### 2、构建正式的docker镜像 ``` docker build -t samge/proxy-forward:v1.20220424 -f Dockerfile . ``` #### 3、启动镜像(使用-v设置默认的代理文件列表映射): ``` docker run -d \ -p 30009:8080 \ -v /home/samge/custom_proxy.txt:/code/custom_proxy.txt \ --restart always \ --memory=2.0G \ --name=proxy-forward \ samge/proxy-forward:v1.20220424 ``` #### 4、测试代理是否生效(设置mitmproxy跳板的 ip:端口 后再访问:http://httpbin.org/ip ),例如(跳板代理为:192.168.11.100:30009): - 直接设置跳板代理,则每次请求会随机从custom_proxy.txt文件中读取一个代理进行请求 ``` curl --location --request GET 'http://httpbin.org/ip' \ --proxy 192.168.11.100:30009 ``` - 可以在header中传特定的代理ip给mitmproxy: ``` curl --location --request GET 'http://httpbin.org/ip' \ --proxy 192.168.11.100:30009 \ --header 'proxy_ip: http://192.168.3.169:8888' ``` #### 5、其他说明、 - 5.1、本地环境运行api.py测试跳板:```python3 api.py``` - 5.2、调试时,mitmdump常用命令: > 开启二次代理跳板,需要设置 --mode upstream:http://ip:端口号/,例如: ``` mitmdump --mode upstream:http://192.168.3.169:8888/ -s test.py -p 8999 --ignore-hosts ".*443$" ``` - 5.3、运行mitmproxy的机器需要添加mitmproxy的根证书,这里以ubuntu的为例(需要先链接mitmproxy代理才能下载证书): ``` curl -# http://mitm.it/cert/pem -o mitmproxy-ca-cert.pem openssl x509 -in mitmproxy-ca-cert.pem -inform PEM -out mitmproxy-ca-cert.crt sudo cp mitmproxy-ca-cert.crt /usr/share/ca-certificates/mitmproxy-ca-cert.crt sudo dpkg-reconfigure ca-certificates # 这里执行后,使用空格键勾选mitmproxy证书再保存 sudo update-ca-certificates # 更新证书 ```