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
上一篇下一篇

猜你喜欢

热点阅读