一、环境介绍
操作系统:CentOS 7 x64
二、概念
我们根据其向目标地址发送请求时,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
匿名代理比透明代理进步了一点:别人只能知道你用了代理,无法知道你是谁。
- 混淆代理(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
高匿代理让别人根本无法发现你是在用代理。考虑到后台人员可以轻而易举的根据这些变量来判断出哪些访问是使用了代理,我们在做爬虫的项目的时候尽可能的使用高匿代理
三、squid代理服务器搭建
- 安装
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
//修改端口号,默认端口号为3128
http_port 3128
// 文件最后加上 高匿配置
request_header_access X-Forwarded-For deny all
request_header_access From deny all
request_header_access Via deny all
为了防止端口被扫描到导致代理服务器流量被滥用,建议修改默认端口和增加用户密码配置
- 配置密码
// 安装htpasswd
yum -y install httpd-tools
// 在 /etc/squid/passwd中生成登录用户名和密码
htpasswd -c /etc/squid/passwd 您的用户名
- 重启服务
service squid restart
- 开放端口
// 开启端口
firewall-cmd --zone=public --add-port=3128/tcp --permanent
命令含义:
--zone #作用域
--add-port=3128/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
// 重启防火墙
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 / 语法
结果为:
image.png
网友评论