docker构建tor代理并转成http代理
2020-05-03 本文已影响0人
niyiwei
tor是一个专用于匿名网络的代理,内部会随机使用ip进行访问,这样可以大大的提高隐私性,并且tor代理也能实现翻墙,只不过有很多网站都限制tor流量,如果做爬虫的话,经常被封ip的情况可以使用tor,随机ip很爽,,但是转发了三个地址的时候,就会变的很慢,,
在访问 onion 结尾的暗网地址,需要使用tor 提供的代理,才能访问,一般来说tor 提供的是socket5的代理,浏览器不能直接使用socket5,需要使用 privoxy,将socket5 转http访问
如果在代理服务器经常换的情况下,还需要给每一个代理服务器配置tor 代理,就不是很爽了
现在我们直接使用docker构建tor 以及privoxy的镜像,实现开箱即用,
构建基础镜像
我们需要准备一些文件,来定义 privoxy 的代理模式
config:
forward-socks5t / 127.0.0.1:9050 .
listen-address 0.0.0.0:1080
confdir /etc/privoxy
logdir /var/log/privoxy
actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on.
actionsfile default.action # Main actions file
actionsfile user.action # User customizations
filterfile default.filter
filterfile user.filter # User customizations
logfile logfile
toggle 1
enable-remote-toggle 0
enable-remote-http-toggle 0
enable-edit-actions 0
enforce-blocks 0
buffer-limit 4096
enable-proxy-authentication-forwarding 0
forwarded-connect-retries 0
accept-intercepted-requests 0
allow-cgi-request-crunching 0
split-large-forms 0
keep-alive-timeout 5
socket-timeout 300
entrypoint.sh:
#! /bin/bash
privoxy /etc/privoxy/config && tor
FROM alpine:latest
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ADD ./config /etc/privoxy/config
ADD ./entrypoint.sh /
RUN apk update \
&& apk upgrade \
&& apk add tor privoxy\
&& rm /var/cache/apk/*
CMD ["sh", "/entrypoint.sh"]
后面:
docker build . -t demo_tor && docker run -d -p 1080:1080 demo_tor
访问 telnet 127.0.0.1 1080 即可,映射到物理机的ip可以更改,
使用nginx 负载均衡
使用自定义的配置文件,
nginx.conf:
worker_processes 1;
events {
worker_connections 1024;
}
stream {
upstream local-proxy {
${NG_SOCK_PROXY}
}
server {
listen 8080;
proxy_pass local-proxy;
}
}
entrypoint.sh:
#! /bin/bash
# 将环境变量转到配置文件中
envsubst < /nginx.conf > /etc/nginx/nginx.conf && exec nginx -g 'daemon off;'
Dockerfile:
FROM nginx
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 默认的配置,后续修改,即可,,
ENV NG_SOCK_PROXY="server 127.0.0.1:8888;"
ADD ./entrypoint.sh /
ADD ./nginx.conf /
CMD ["sh", "/entrypoint.sh"]
docker build . -t loop
编写docker-compose.yml,这样子是为了更好的启动,,,
如果有多个可以添加NG_SOCK_PROXY 环境变量的记录,
当然也可以直接扩展proxy的应用,不需要编写那么多的规则,
version: '3'
services:
# 轮训下面的代理程序,并且将sockt转http
loop:
image: yylany/tor_loop:latest
ports:
- "58118:8080"
environment:
- "NG_SOCK_PROXY=server proxy1:1080;
server proxy2:1080;
"
# 以下是代理程序
proxy1:
image: demo_tor
proxy2:
image: demo_tor