【爬虫】 Squid 3.5.20 安装与配置 高匿代理

Squid 介绍


Squid是一个缓存internet数据的一个软件,它接收用户的下载申请,并自动处理所下载的数据。也就是说,当一个用户象要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。目前,Squid 可以代理HTTP, FTP, GOPHER, SSL 和 WAIS 协议。

使用squid的好处:快速响应,减少网络阻塞,增强访问控制,提高安全性.可以针对特定的网站,用户,网络,数据类型实施访问控制。

squid有3种代理方式:普通代理模式,透明代理模式,反向代理模式。

客户端PC <=> Squid代理服务器 <=> Internet

正向代理服务器可满足内网仅有一台服务器可以上网,而要供内网所有机器上网的需求,也可以用于爬虫的代理访问。在实践中我将Squid作为爬虫代理服务器,实现了多IP切换的功能,将在后续文章中记录实现过程。

下载与安装


1、环境

系统:CentOS Linux release 7.9.2009 (Core)

Squid 版本: Squid 3.5.20

2、去官网下载源代码并编译安装

cd /tmp
wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.20.tar.gz
tar xzf squid-3.5.20.tar.gz
cd squid-3.5.20
./configure
make && make install

3、或者也可以 通过 yum 下载

yum install -y squid

配置 Squid


高匿代理配置方法

1、给同一个网卡增加多个IP

ip addr add 222.xx.xxx.3 dev ens192(网卡名)
ip addr add 222.xx.xxx.4 dev ens192(网卡名)
ip addr add 222.xx.xxx.5 dev ens192(网卡名)

ip addr

2、删除网卡上的IP:

如果一张网卡支持不了太多IP,可能需要写个python脚本进行动态添加与删除

ip addr del 222.xx.xxx.3 dev ens192(网卡名)

3、修改 squid.conf 配置文件

官网配置说明:http://www.squid-cache.org/Doc/config/

vim /etc/squid/squid.conf

# 定义本地网段
acl ezrealer1 myip 222.xx.xxx.3
# tcp_outgoing_address 配置通过多个不同的上行ip访问外部网络
# 可以让重要的客户使用高性能的连接,普通用户使用慢速的连接
tcp_outgoing_address 222.xx.xxx.3 ezrealer1
acl ezrealer2 myip 222.xx.xxx.4
tcp_outgoing_address 222.xx.xxx.4 ezrealer2
acl ezrealer3 myip 222.xx.xxx.5
tcp_outgoing_address 222.xx.xxx.5 ezrealer3

# 带 http_access deny 的都注释掉
# http_access deny
http_access allow all

# 设置代理端口,可以随便设置,不和其他端口冲突就可以
http_port 3128

# 定义squid的cache存放路径 、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量
cache_dir ufs /var/spool/squid 100 16 256

coredump_dir /var/spool/squid

# 设置squid磁盘缓存最大文件,超过4M的文件不保存到硬盘
maximum_object_size 4 MB
# cache目录使用量大于95%时,开始清理旧的cache
cache_swap_high 95
# cache目录清理到90%时停止
cache_swap_low 90

# 使代理成为高匿代理
request_header_access Via deny all
request_header_access X-Forwarded-For deny all

IP 的快捷配置

acl ezrealer src  222.xx.xxx.0/24	# 表示 222.xx.xxx.1 ~ 222.xx.xxx.254

192.168.2.0/24表示的IP范围
192.168.2.0换成32位二进制,四组,每组8位

/24 表示前24位不变,后8位由全0变化到全1的过程,也就是由“00000000”变化到“11111111”
又因为全0是子网网络地址,全1是子网广播地址,这两个地址是不分配给主机使用的。
所以有效的可分配的范围是前24位不变,后8位由“00000001”变化为“11111110”的范围
再转换回十进制就是192.168.2.1~192.168.2.254

4、设置开机自启动并运行 squid

systemctl enable squid

# 初始化
squid -z

# 检查配置文件
squid -k parse

# 启动 squid 服务
systemctl start squid

# 检查端口
netstat -ntpl 

5、开启远程访问

执行完第三步后,可以在服务器上通过python 访问 httpbin 网站 查看代理是否生效,但是要在远程(非squid服务器上)使用代理,则需要配置防火墙

#清除防火墙filter表中规则
iptables -F            
 
#关闭增强安全×××
setenforce 0             

#这句策略就是允许访问3218端口的tcp数据包通过
iptables -I INPUT -p tcp --dport 3218 -j ACCEPT

service squid reload     #重新加载服务配置
firewall-cmd --zone=public --add-port=5672/tcp --permanent   # 开放5672端口

firewall-cmd --zone=public --remove-port=5672/tcp --permanent  #关闭5672端口

firewall-cmd --reload   # 配置立即生效

firewall-cmd --zone=public --list-ports # 列出有开放的端口

systemctl stop firewalld.service

firewall-cmd --state

netstat -lnpt # 查看监听的端口

netstat -lnpt |grep 5672 # 检查端口被哪个进程占用

ps 6832

6、测试代理是否可用

import requests

s = requests.Session()
s.proxies.update({"http": "222.xx.xxx.3:3128"})
#s.proxies.update({"http": "60.175.237.114:31928"})

resp = s.get("http://httpbin.org/ip")
print(resp.text)

动态IP配置策略

参考:https://xnathan.com/2017/03/02/squid-proxy-pool/

1、搭建思路

  • 使用 ip addr 命令 对网卡上的IP进行动态的增加或删除;
  • 修改 squid.conf,并使用 squid -k reconfigure 重载 squid 配置;

2、对网卡进行 动态增加或删除 ip

命令:

# 增加
ip addr add 222.xx.xxx.3 dev ens192(网卡名)
# 删除
ip addr del 222.xx.xxx.3 dev ens192(网卡名)

python脚本:

在这里插入代码片

3、对 squid.conf 进行 动态增加或删除 ip

# 检查配置文件
squid -k parse

# 重载配置文件
squid -k reconfigure

ACL 访问控制


ACL 的功能

Squid提供了强大的代理控制机制,通过合理设置ACL(Access Control List,访问控制列表)并进行限制,可以针对源地址、目标地址、访问的URL路径、访问的时间等各种条件进行过滤。

ACL 控制步骤

ACL访问控制的步骤:

1、使用acl配置项定义需要控制的条件

2、通过http_access配置项对已定义的列表做“允许”或“拒绝”访问的控制

acl  列表名称  列表类型  列表内容

列表类型可选项:

src          源地址
dst              目标地址
port            目标地址
dstdomain       目标域
time            访问时间
maxconn       最大并发连接
url_regex         目标URL地址  # 可以定义大的范围比如http://www.baidu.com
urlpath_regex  整个目标URL路径  # 可以定位到每个网站的具体目标的url,比如百度音乐的一首歌的url

使用案例

acl  all src 0.0.0.0/0.0.0.0
http_access  deny  all

~]#vim /etc/squid.conf
acl all src 0.0.0.0/0.0.0.0  (有些版本要这么写acl all src all)
acl MYLAN src  192.168.1.0/24   192.168.4.0/24
acl  WORKTIME  time  MTWHF  08:30-17:30   (其中MTWHF是周一到周五的英文首字母)
http_access allow  MYLAN  WORKTIME
http_access  deny  all
~]#service squid  reload
#注意要先写http_access allow  MYLAN  WORKTIME再写http_access  deny  all,因为先执行前面的,后面的就不执行了

# 黑名单限制,可以在ipblock 配置多个 黑名单 ip,或者在 dmblock 配置多个 黑名单域名,比如 .qq.com
acl IPBLOCK dst "/etc/squid/ipblock.list"
acl DMBLOCK dstdomain "/etc/squid/dmblock.list"
http_access  deny  IPBLOCK
http_access  deny  DMBLOCK

参考

Squid 3.x 升级为 Squid4

1、必须使用root安装,具有sudo权限,且用sudo执行命令都不行,过程中会报各种权限不够。肯定有其他低权限安装和使用的方法,但没有时间研究了。

2、装完后必须使用/usr/local/squid/sbin/squid -z先初始化缓存空间。

3、删除3之后没有重启服务器,在运行squid的时候报错:FATAL: Ipc::Mem::Segment::create failed to shm_open(/squid-cf__metadata.shm): (17) File exists
,去/dev/shm目录下删掉squid的shm文件即可。

squid官网:http://www.squid-cache.org/Doc/
《squid中文指南》:http://zyan.cc/book/squid/index.html
《squid中文指南》:https://www.phpfans.net/manu/Squid/
https://xnathan.com/2017/02/28/squid-proxy/
https://xnathan.com/2017/03/01/squid-anony-proxy/
https://xnathan.com/2017/03/02/squid-proxy-pool/

http://blog.chinaunix.net/uid-25266990-id-2722465.html

https://blog.51cto.com/linuxme/372960

https://www.cnblogs.com/–smile/p/11090823.html

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是Squid代理服务器的配置与管理实验小结。 Squid是一款功能强大的代理服务器软件,可以实现缓存、反向代理、访问控制等功能。在Linux系统中,我们可以通过安装Squid软件包来搭建代理服务器。 下面是Squid代理服务器的配置与管理实验小结: 1. 安装Squid软件包 在Linux系统中,我们可以使用包管理器来安装Squid软件包。例如,在Ubuntu系统中,可以使用以下命令来安装Squid: ``` sudo apt-get install squid ``` 2. 配置Squid代理服务器 Squid代理服务器的配置文件为/etc/squid/squid.conf。在这个文件中,我们可以配置代理服务器的缓存设置、访问控制、反向代理等功能。 例如,我们可以通过以下配置来设置Squid代理服务器的缓存大小为1GB: ``` cache_dir ufs /var/spool/squid 1000 16 256 ``` 3. 启动Squid代理服务器 启动Squid代理服务器非常简单,只需要使用以下命令即可: ``` sudo service squid start ``` 4. 管理Squid代理服务器 在Squid代理服务器运行期间,我们可以通过以下命令来管理代理服务器: - 停止代理服务器:sudo service squid stop - 重启代理服务器:sudo service squid restart - 查看代理服务器状态:sudo service squid status 另外,我们还可以使用Squid提供的命令行工具来管理代理服务器,例如: - 清除缓存:sudo squid -k shutdown && sudo rm -rf /var/spool/squid/* - 查看缓存统计信息:sudo squidclient -p 3128 mgr:info 以上是Squid代理服务器的配置与管理实验小结,希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值