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 256coredump_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 ACCEPTservice 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.servicefirewall-cmd --statenetstat -lnpt # 查看监听的端口netstat -lnpt |grep 5672 # 检查端口被哪个进程占用ps 6832

6、测试代理是否可用

import requestss = 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

【爬虫】 Squid 3.5.20 安装与配置 高匿代理相关推荐

  1. 爬虫(三):爬取西刺高匿代理

    抓取西刺高匿代理,并验证IP的可用性,存储到本地文件中. 代码如下 # 导入模块 import requests import chardet import random from scrapy.se ...

  2. 爬虫ip代理对高匿代理ip的重要性

    对于爬虫来说,在听到ip代理的时候,听得最多的莫过于透明代理.匿名代理.高匿代理这几个词了,那么分别是什么意思呢?互相之间有什么样的区别呢? 为什么说爬虫ip代理一定要使用高匿代理呢? 带着这些问题, ...

  3. 爬虫ip代理对高匿代理ip的必要性

    对于爬虫来说,在听到ip代理的时候,听得最多的莫过于透明代理.匿名代理.高匿代理这几个词了,那么分别是什么意思呢?互相之间有什么样的区别呢? 为什么说爬虫ip代理一定要使用高匿代理呢? 带着这些问题, ...

  4. nexus安装 及配置阿里云代理

    一.安装 1.安装jdk https://mp.csdn.net/mdeditor/86539449# 2.安装nexus (使用用户为admin, 非root用户) 2.1基本信息 2.2 安装 # ...

  5. Python爬虫 | 反爬机制:IP限制高匿代理 IP 突破(爬虫 IP 被禁怎么办?)

    一. 什么是代理? 二. 代理服务器的作用 可以进行请求的响应和转发 三. 在爬虫中为何要使用代理 如果我们使用爬虫对一个网站在一段时间内发起一个高频请求,该网站会检测出这个异常的现象,并将异常的请求 ...

  6. centos7安装Nginx 配置及反向代理

    Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine X",是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP ...

  7. ubuntu安装与配置ngnix静态代理与反向代理的流程

    在root用户下安装ngnix sudo su apt-get install nginx sudo service nginx start nginx版本号为1.14.0 更改配置文件中user为r ...

  8. Linux Centos7 Nginx的安装与配置、反向代理、负载均衡、https配置

    Nginx的安装 1.nginx安装包下载地址 http://nginx.org/en/download.html 2.把nginx安装包上传到Linux系统上 2.1 Xhell 自带上传工具. 2 ...

  9. 爬虫获取西刺免费高匿代理

    #有些代理不能使用,使用前先写脚本筛选 import requests from lxml import etree import xlwt import time ip = xlwt.Workboo ...

最新文章

  1. struts2 如何跳转html5,在线HTML编辑器——ueditor,跟struts2结合
  2. Bootloader及u-boot简介/u-boot系统启动流程
  3. x11 gtk qt gnome kde 之间的区别和联系
  4. java 虚基类_重拾C++之虚函数和虚基类以及抽象类
  5. 列标题 如何删除gridcontrol_GridControl简单属性操作
  6. /proc/sys/net/ipv4/目录介绍
  7. IDEA 2019.3新建项目找不到Maven的解决方法
  8. java接收jsonarray_java-如何通过JSONArray获取API的数据
  9. BZOJ2933 : [Poi1999]地图
  10. zebradesigner2教程_zebradesigner pro 2中文版-斑马条码打印机软件下载 附带安装教程 - 安下载...
  11. java找不到符号 符号:类Xxx 位置xxx的解决方案
  12. 制作一个全盘搜索器 ,能搜索整个磁盘所有目录
  13. T156基于51单片机LCD12864指针时钟Proteus设计、keil程序、c语言、源码、ds1302,电子时钟,62256
  14. 四旋翼无人机PID调节(无数次实验总结经验和理论支持)
  15. 485集线器在安防监控系统的应用
  16. (result, consumed) = self._buffer_decode(data, self.errors, final)报错
  17. iOS12加密相册、保险箱、加密相册Pro、保险箱Pro打开就闪退的,不要删除app,关闭4g和WiFi即可正常使用。
  18. 有一个已排好序的数组,要求输入一个数后,按原来排序规律将他插入数组。
  19. 什么是学习?如何学习?
  20. Python/numpy 设置数组某一整行列的值为0/1 修改数组行列设置为特定值

热门文章

  1. 永恒之塔linux服务端,【永恒之塔单机5.8-6.5服务端】2020.06首发一键安装PC大型端游单机游戏客户端支持局域网联机玩[附视频搭建教程]...
  2. 花嫁之容氏浅浅最后怎么样了_花嫁之容氏浅浅小说
  3. 使用随机文件流类RandomAccessFile将一个文本文件倒置读出
  4. 使用maven插件构建docker镜像并推送到阿里镜像仓库
  5. 国内知名插画培训机构有哪些
  6. Precision、Recall、F1-score、Micro-F1、Macro-F1、Recall@K
  7. keyshot Pro for Mac(3D渲染和动画制作)兼容big sur
  8. Oracle语句详解
  9. 使用OOP思想二次封装echarts
  10. 用 Python 玩视频剪辑 让生活简易化