- Fully Optimized for Web Scraping Usage.
- HTTP/HTTPS Support (see wiki)
- socks5 with Authorization Proxy to HTTP(S) proxy convert compatible by Gost
- You can use a VPN as an HTTP proxy.(powered by gluetun )
- Making it IP address based authentication makes it easier to use in your program.(selenium,puppeteer etc)
Docker Container
----------------------------------
Client <----> Squid <-> HTTP/HTTPS Rotate Proxies---\
|
---------------|-> Gost <-> Socks5 Proxy --- Internet
|
--------------<-> VPN to HTTP Proxy <--------/
It can be used in two ways.
1.Automatically control the proxy and rotate each request -> use Squid
2.Control the proxy programmatically -> use Gost Port
If you want to use it from outside, please specify the your IP address to allowed_ip.txt
Example:
93.184.216.34
108.62.57.53
Search FreeProxy List or Paid/Subscribe ProxyService Provider.
example : https://github.com/clarketm/proxy-list
IPAddress:Port:Type(socks5 or http or https or httpsquid):Username:Password
IPAddress:Port:Type(socks5 or http or https or httpsquid)
IPAddress:Port
see example
openvpn/{name}
openvpn/{name}/{name2}.ovpn
openvpn/{name}/secret
git clone https://github.com/39ff/docker-rotating-proxy
cd docker-rotating-proxy && cd setup
docker run --rm -it -v "$(pwd):/app" composer install
cd ..
# If you don't want to set up OpenVPN, please remove it.
rm -rf ./openvpn/*
docker run --rm -it -v "$(pwd):/app/" php:7.4-cli php /app/setup/generate.php
cat docker-compose.yml
docker-compose up -d
curl https://httpbin.org/ip --proxy http://127.0.0.1:3128
-
Sometimes you may need the same IP address for a series of steps. To deal with this problem, we have built a new relay server via gost.
-
Most open proxies will be unavailable in a few days. Therefore, it is useless to build a server for every open proxy, so we use squid's cache_peer to rotate a large number of open proxies.
127.0.0.1:1080:socks5:yourUsername:yourPassword
127.0.0.1:44129:httpsquid:mysquidproxy:mysquidpassword
127.0.0.1:29128:httpsquid:rotatingserviceUsername:password
169.254.0.1:1080:socks5:paidsocksUsername:paidsocksPassword
127.0.0.1:80
172.31.22.222:8080
Here are some practical examples.
using NordVPN,TorGuard,Luminati
89.187.161.86:80:httpsquid:yourNordVPNEmail@example.com:NordVPNPassword
173.254.222.146:1080:socks5:yourTorGuardUsername:Password
zproxy.lum-superproxy.io:22225:httpsquid:yourLuminatiUsername:Password
version: '3.4'
services:
squid:
ports:
- '3128:3128'
image: 'b4tman/squid:5.8'
volumes:
- './config:/etc/squid/conf.d:ro'
container_name: dockersquid_rotate
environment:
- SQUID_CONFIG_FILE=/etc/squid/conf.d/squid.conf
extra_hosts:
- 'host.docker.internal:host-gateway'
healthcheck:
test: [CMD-SHELL, 'export https_proxy=127.0.0.1:3128 && export http_proxy=127.0.0.1:3128 && wget -q -Y on -O - https://checkip.amazonaws.com || exit 1']
retries: 5
timeout: 10s
start_period: 10s
interval: 300s
proxy1:
ports:
- '30000:30000'
image: 'ginuerzh/gost:latest'
container_name: dockergost_1
command: '-L=:30000 -F=socks5://vpn:unlimited@82.196.7.200:2434'
vpn2:
ports:
- '30001:8888/tcp'
- '50000:8388'
image: qmcgaw/gluetun
container_name: dockervpn_2
devices:
- '/dev/net/tun:/dev/net/tun'
cap_add:
- NET_ADMIN
volumes:
- './openvpn/hk-hkg.prod.surfshark.comsurfshark_openvpn_tcp.ovpn:/gluetun'
environment:
- VPN_SERVICE_PROVIDER=custom
- VPN_TYPE=openvpn
- OPENVPN_CUSTOM_CONFIG=/gluetun/vpn.ovpn
- HTTPPROXY=on
- HTTPPROXY_USER=
- HTTPPROXY_PASSWORD=
- HTTPPROXY_STEALTH=on
- OPENVPN_USER=xxxxx
- OPENVPN_PASSWORD=yyyyy
vpn3:
ports:
- '30002:8888/tcp'
- '50001:8388'
image: qmcgaw/gluetun
container_name: dockervpn_3
devices:
- '/dev/net/tun:/dev/net/tun'
cap_add:
- NET_ADMIN
volumes:
- './openvpn/jp454.nordvpn.com.tcp443.ovpn:/gluetun'
environment:
- VPN_SERVICE_PROVIDER=custom
- VPN_TYPE=openvpn
- OPENVPN_CUSTOM_CONFIG=/gluetun/vpn.ovpn
- HTTPPROXY=on
- HTTPPROXY_USER=
- HTTPPROXY_PASSWORD=
- HTTPPROXY_STEALTH=on
- OPENVPN_USER=xxxxx
- OPENVPN_PASSWORD=yyyyy
port 3128 is rotation port.
Recommended for one-time requests that do not require browser rendering, such as curl
sh-4.2# curl https://httpbin.org/ip --proxy https://127.0.0.1:3128
{
"origin": "82.196.7.200"
}
sh-4.2# curl https://httpbin.org/ip --proxy https://127.0.0.1:3128
{
"origin": "89.187.161.56"
}
sh-4.2# curl https://httpbin.org/ip --proxy https://127.0.0.1:3128
{
"origin": "84.17.37.159"
}
sh-4.2# curl https://httpbin.org/ip --proxy https://127.0.0.1:3128
{
"origin": "81.171.85.49"
}
sh-4.2#
and.. try static ip gateway
Recommended in selenium, puppeteer and playwright
# curl httpbin.org/ip --proxy http://127.0.0.1:30000
{
"origin": "82.196.7.200"
}
# curl httpbin.org/ip --proxy http://127.0.0.1:30000
{
"origin": "82.196.7.200"
}
# curl httpbin.org/ip --proxy http://127.0.0.1:30001
{
"origin": "84.17.37.159"
}
# curl httpbin.org/ip --proxy http://127.0.0.1:30001
{
"origin": "84.17.37.159"
}
By default, ports can be used without authentication. Some VPSs that are directly exposed globally may require appropriate modifications to the docker-compose.
0 * * * * /your_sh_path_here/public_proxy_cron.sh
- Username/Password Auth for Enterprise