一、環(huán)境介紹
操作系統(tǒng):CentOS 7 x64
二、概念
我們根據(jù)其向目標(biāo)地址發(fā)送請求時,REMOTE_ADDR, HTTP_VIA,HTTP_X_FORWARDED_FOR三個變量不同。將它分為:透明代理、匿名代理、混淆代理、高匿代理。
- 透明代理(Transparent Proxy)
REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Your IP
透明代理雖然可以直接“隱藏”你的IP地址,但是還是可以從HTTP_X_FORWARDED_FOR來查到你是誰。
- 匿名代理(Anonymous Proxy)
REMOTE_ADDR = proxy IP
HTTP_VIA = proxy IP
HTTP_X_FORWARDED_FOR = proxy IP
匿名代理比透明代理進(jìn)步了一點:別人只能知道你用了代理,無法知道你是誰。
- 混淆代理(Distorting Proxies)
REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Random IP address
別人還是能知道你在用代理,但是會得到一個假的IP地址,偽裝的更逼真
- 高匿代理(Elite proxy或High Anonymity Proxy)
REMOTE_ADDR = Proxy IP
HTTP_VIA = not determined
HTTP_X_FORWARDED_FOR = not determined
高匿代理讓別人根本無法發(fā)現(xiàn)你是在用代理。考慮到后臺人員可以輕而易舉的根據(jù)這些變量來判斷出哪些訪問是使用了代理,我們在做爬蟲的項目的時候盡可能的使用高匿代理
三、squid代理服務(wù)器搭建
- 安裝
yum install squid -y
- 配置
vi /etc/squid/squid.conf
//用戶名密碼配置,加在http_access deny all之前
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
acl auth_user proxy_auth REQUIRED
http_access allow auth_user
//修改端口號,默認(rèn)端口號為3128
http_port 3128
// 文件最后加上 高匿配置
request_header_access X-Forwarded-For deny all
request_header_access From deny all
request_header_access Via deny all
為了防止端口被掃描到導(dǎo)致代理服務(wù)器流量被濫用,建議修改默認(rèn)端口和增加用戶密碼配置
- 配置密碼
// 安裝htpasswd
yum -y install httpd-tools
// 在 /etc/squid/passwd中生成登錄用戶名和密碼
htpasswd -c /etc/squid/passwd 您的用戶名
- 重啟服務(wù)
service squid restart
- 開放端口
// 開啟端口
firewall-cmd --zone=public --add-port=3128/tcp --permanent
命令含義:
--zone #作用域
--add-port=3128/tcp #添加端口,格式為:端口/通訊協(xié)議
--permanent #永久生效,沒有此參數(shù)重啟后失效
// 重啟防火墻
firewall-cmd --reload
//查看開啟的端口
firewall-cmd --list-ports
四、測試
import requests
url = 'https://httpbin.org/headers'
proxies = {
'https': 'https://ail:123456@45.76.212.133:3128',
}
res = requests.get(url, proxies=proxies, timeout=3)
print(res.text)
若你的代理需要使用HTTP Basic Auth,可以使用 http: // user:password @ host / 語法
結(jié)果為:

image.png