关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
如果找不到firewalld.service,可以忽略
如果使用云服务器,还需要配置安全组,具体来说,就是要将squid服务要使用的端口配置到安全组的入站规则中,后面我使用的是8128,因为默认的3128容易被攻击
无需授权的开放代理(open proxy)是不安全的,因此后面配置为通过身份验证的用户才能访问
安装squid
yum install -y squid
yum install -y httpd-tools
创建用户
mkdir -p /etc/squid/passwords
htpasswd -c /etc/squid/passwords/squid_passwd squid_user
# 然后需要输入两次密码
# squid_user是用户名,可以修改
配置squid
vim /etc/squid/squid.conf
写入以下内容
# 监听IPv4的8128端口
http_port 0.0.0.0:8128
# 启用基本认证
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwords/squid_passwd
auth_param basic realm Squid Proxy Server
auth_param basic children 5
auth_param basic credentialsttl 2 hours
# 定义认证访问控制列表(ACL)
acl authenticated proxy_auth REQUIRED
# 允许通过身份验证的用户访问
http_access allow authenticated
# 不限制任何流量,允许所有访问
# 其他流量被认证后允许
http_access allow all
# 禁用缓存(如果不需要缓存功能)
cache_dir null /tmp
# 定义日志文件
access_log /var/log/squid/access.log squid
# 允许所有客户端进行代理
# 如果要限制某些IP访问,可以使用 acl 规则,但这里我们允许所有人访问
acl all src 0.0.0.0/0
http_access allow all
# Squid通过以下规则可以处理HTTPS流量 (squid通常作为HTTP代理使用)
# 如果想让它能支持HTTPS代理,需要开启SSL加速并配置合适的证书,这里暂时不启用SSL
# https_port 3129
# 关闭Squid的默认缓存限制,禁用其他缓存选项
maximum_object_size 0 KB
# Squid会自动选择最适合的最大文件大小缓存
cache_mem 64 MB
# 配置日志文件
logfile_rotate 10
启动squid
systemctl start squid
systemctl enable squid
# 查看状态
# systemctl status squid
# 重启
# systemctl restart squid
# 查看日志
# tail -f /var/log/squid/access.log
验证
import requests
url = "https://baidu.com"
proxy_url = "http://[username]:[password]@[host]:8128"
proxies = {"http": proxy_url, "https": proxy_url}
response = requests.get(url, proxies=proxies)
发表回复