一、环境介绍
操作系统:CentOS 7 x64
二、概念
我们根据其向目标地址发送请求时,REMOTE_ADDR, HTTP_VIA,HTTP_X_FORWARDED_FOR三个变量不同。将它分为:透明代理、匿名代理、混淆代理、高匿代理。
透明代理(Transparent Proxy)
REMOTE_ADDR = Proxy IPHTTP_VIA = Proxy IPHTTP_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 IPHTTP_VIA = Proxy IPHTTP_X_FORWARDED_FOR = Random IP address
别人还是能知道你在用代理,但是会得到一个假的IP地址,伪装的更逼真
高匿代理(Elite proxy或High Anonymity Proxy)
REMOTE_ADDR = Proxy IPHTTP_VIA = not determinedHTTP_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//修改端口号,默认端口号为3128http_port 3128// 文件最后加上 高匿配置request_header_access X-Forwarded-For deny all request_header_access From deny all request_header_access Via deny all
为了防止端口被扫描到导致代理服务器流量被滥用,建议修改默认端口和增加用户密码配置
配置密码
// 安装htpasswdyum -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 / 语法
结果为: