1.安装Squid
yum install squid -y
2.配置squid参数
进入squid配置文件
$ cd /etc/squid/
设置监听端口,设置为允许所有ip访问
$ vim squid.conf 将conf文件的内容设置为如下:
dns_v4_first on
http_port 3228 # 修改端口,默认为 3128
http_access allow all # 添加 ,为允许所有ip
3.检查配置文件是否有误:
$ squid -k parse # 配置文件解析日志中,没有出现ERROR 就没有问题
4.启动服务:
$ systemctl start squid
5.查看squid监听的端口:
$ netstat -lnpt
如上图,3128端口已在监听。
在squid.conf文件中,添加允许本机ip访问3128端口(否则大量外部主机会探测、攻击到本机代理服务)
acl allow_host x.y.z.d
http_access allow allow_host
systemctl restart squid 重启服务,配置参数生效
squid的日志目录为/var/log/squid/, 两种类型日志access 和cache;
在防火墙中打开squid代理服务器 重启squid加载更改
[root@squid-proxy ~]# systemctl restart squid
6在win10客户端上配置代理ip,就可以了
在云主机服务器上,还需打开对应防火墙规则,允许客户端ip访问3128代理服务。
【python测试脚本】
网上流传的测试代理服务器是否可用的脚本,大都是错的,原因如下:
1.没区分网站URL使用的协议
在使用代理服务器时,为了让请求通过代理服务器进行转发,需要在请求中指定代理服务器的 URL,同时需要指定使用的协议。这就需要使用代理字典中的 http
和 https
键来指定代理服务器的 URL,而有些人设置代理时只设置了http
协议,那么如果去请求https的网站就会出现上面的错误。
例如下面这样设置就是错误的做法
proxies = {
'http': 'http://127.0.0.1:7890',
}
url = 'https://www.baidu.com/'
response = requests.get(url, proxies=proxies)
在使用代理服务器时,代理字典中的键应该按照访问的协议来分别设置。比如,当你需要访问一个使用 HTTP 协议的网站时,就应该使用 http
键。当你需要访问一个使用 HTTPS 协议的网站时,就应该使用 https
键。像代码中设置的http键去请求https协议的URL,就会导致SSL握手失败,无法建立安全连接。
2.没区分代理服务器使用的协议
这种情况中大多人都是像下面这样设置的代理
proxies = {
'http': 'http://127.0.0.1:7890',
'https': 'https://127.0.0.1:7890'
}
第一眼看感觉没毛病,但注意proxies
参数中的https
键值为https://127.0.0.1:7890
,即使用 https://
的URL连接到代理服务器,这里就有可能会出现问题了。
换句话说,你配置的代理服务器 URL 使用的是 https://
URL 在某些情况下可能会导致连接失败。原因是某些代理服务器不支持直接从客户端到目标服务器建立安全的 TLS/SSL 连接。实际上,对于 HTTPS 请求,代理服务器经常使用 CONNECT 方法将客户端与目标服务器之间建立隧道。这个隧道对应的是明文的 HTTP 协议。
当然,可以使用https
与代理服务器建立链接,但前提是代理服务器支持https
协议,否则就会请求出错。
正确设置示例如下:
proxies = {
'http': 'http://127.0.0.1:7890',
'https': 'http://127.0.0.1:7890'
}
下面代码可以测试你设置的代理ip是否已经生效的正确代码,打印出请求的ip及你所在地区
import requests
proxies={
'http':'http://你的代理ip:端口',
'https':'http://你的代理ip:端口'
}
response=requests.get('https://www.ip.cn/api/index?ip=&type=0',proxies=proxies)
print(response.text)
以上通过自建squid代理服务器测试通过。
【发文章不易,请多多关注、点赞、留言支持!谢谢!】