squid服务搭建

1.squid服务搭建 服
squid的服务搭建,前面的视频中实操已经掌握了的,这里补充一个文档
准备工作:
公网服务器一台,Linux系统
ssh远程工具,远程操作公网服务器
服务器安装Docker服务
准备好了,开始搭建环境
1. 安装安 squid镜像镜
squid有现成的Docker镜像,使用命令直接拉取
sudo docker pull sameersbn/squid
2. 准备配置文件 准
squid的默认是只允许内网访问的,不允许公网访问。
所以在最开始的时候,就需要把配置文件给准备好,一会启动的时候,直接给挂载到容器上,一步到位
在任意位置,新建一个文件,名称是 squid.conf,内容如下:
acl all src 0.0.0.0/0.0.0.0
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 443 # https
acl CONNECT method CONNECT
http_access allow all
http_port 3128
visible_hostname proxy
3. 启动启 squid容器容
一切准备就绪,把squid的镜像启动起来,如下命令:
sudo docker run -d --name squid -p 3128:3128 -v /path_to/squid.conf:/etc/squid/squid.conf sameersbn/squid
简单介绍一下命令:
sudo docker run是启动镜像的命令
-d是指后台运行
–namesquid是容器的名称
-p 3128:3128 是宿主和容器的端口绑定,前宿主后容器
-v /path_to/squid.conf:/etc/squid/squid.conf是文件的配置,前宿主后容器
sameersbn/squid 最后这个就是指定镜像了
启动后,没报错,并会返回一个长字符串,就是成功了
4. 测试代理服务 测
在本地电脑测试,这里的测试方法是wget命令,适用Linux和MacOS系统,Windows请自行找方法测试。
首先打开终端,输入如下命令:
export http_proxy=http://xxx.xxx.xxx.xxx:3128
wget http://www.baidu.com
简单介绍:
1. 第一行命令是设置终端代理,xx.xx.xx.xx是你的公网IP,3128是squid的端口号
2. 第二行命令是下载一个网址,这里写的是百度
如果代理工作正常,是这样的输出结果:
如果代理异常,则肯定是失败的,贴个示意图:
没有安全验证的代理,是“裸贷”,非常的不安全,所以下面贴上带有安全加密的配置文件和启动命令。
5. 加密配置 加
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
1
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl localnet src 0.0.0.0/0.0.0.0
acl localnet src 0.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
# username&password auth config
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/squid_passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access deny to_localhost
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320
这个是配置文件,就是前面的squid.conf,用这个更安全
但是这里并未提及账号密码,因为账号密码需要额外的配置,所以下一步
6. 生成账号密码 生
这里的账号密码是需要用命令去生成,该命令是 htpasswd 。
如果你直接使用,系统报错,则需要做个安装,这里以ubuntu为例,安装命令是:
$ sudo apt install apache2-utils
确保系统中有htpasswd命令,然后开始生成
$ sudo htpasswd -c squid_passwd username
# 这里会提示你输入密码
# 然后再输入一次密码
# 最后提示成功,完事
命令行中,请使用你的账号,替换这里面的username。
密码也是输入你自己的。
在加密的配置文件和账号密码文件都准备好之后呢,把前面创建的squid容器停止并删除,然后使用命令行,重新创建一个,如下:
$ sudo docker run -d --name squid -p 3128:3128 -v /home/ubuntu/squid.conf:/etc/squid/squid.conf -v /home/ubuntu/squid_passwd:/etc/squid/squid_passwd sameersbn/squid
这条命令行,就是在前面的容器启动命令之上,加了一个密码文件的配置
/home/ubuntu/squid_passwd:/etc/squid/squid_passwd
最后就是再次测试,命令行如下:
$ export http_proxy=http://username:password@xxx.xxx.xxx.xxx:3128
$ wget http://www.baidu.com
2. vps介绍介
搭建squid测试服务,我们用的是腾讯云的云服务器,也是vps的一种。
那vps是什么意思?它包含哪些主机呢?
下面是我从百科上拿来的介绍
VPS(VirtualPrivate Server 虚拟专用服务器)技术,将一台服务器分割成多个虚拟专享服务器的优质服务。实现VPS的技术分为容器技术,和虚拟化技术在容器或虚拟机中,每个VPS都可选配
独立公网IP地址、独立操作系统、实现不同VPS间磁盘空间、内存、CPU资源、进程和系统配置的隔离,为用户和应用程序模拟出“独占”使用计算资源的体验。VPS可以像独立服务器一样,重
装操作系统,安装程序,单独重启服务器。VPS为使用者提供了管理配置的自由,可用于企业虚拟化,也可以用于IDC资源租用。
介绍的还算详细,但是肯定不适合小白理解,我在这里做个直播的翻译和概括。
vps是一个创造云服务器的系统,而且特指非物理服务器。
你买的云服务商的云服务器,包含完整的真实物理机系统体验,有完备的网络和设备信息和性能。
vps的简单介绍就是创建云服务器系统的,那它包含哪些类型的主机呢?简单概括一下:
1. 固定IP的云服务器,例如演示视频中用的腾讯云服务器
2. 不固定IP的云服务器,ADSL拨号服务器
3. 共享IP的云服务器,共用一个IP因为可以指定不同的端口
当然还有不在此列的其他服务器,例如:
独立物理云服务器
托管物理机服务器
这里面介绍的不同种类的服务器,是因技术和环境的不同,而叫做不同的服务器,在使用来看,都是一样的。
对于爬虫来说,ADSL拨号服务器,是最适合爬虫的,因为ip来自于服务器拨号运营商随机分配的,而且带宽恒定,重点是IP可以根据网络的重启来重新分配IP。
3. 代理池架构介绍 代
代理池的架构,主要在于部署squid服务的服务器数量,如下截图:
2
因为每台squid服务,最有价值的就是服务器的代理IP,所以这里的服务器,最好统一使用ADSL拨号服务器。
特别说明一下squid的工作流程:
1. ADSL服务器启动后,自动启动squid服务,监听一个端口,这个端口要记录,也许还需要有效时间和账号密码信息等。
2. ADSL服务器服务器定期重启网络服务,例如5分钟,则IP信息每5分钟切换一个。
3. ADSL服务器还需要定期发起一个请求,例如2分钟发送一次请求,内容是端口,发送给“代理IP分发管理系统”
4. 特别说明,定期发送请求,不需要将IP发过去,因为请求过去了,管理系统就可以知道是哪个ip发过来的。
这套ADSL服务器的软件设备很简单,squid服务和定期请求服务,都是非常简单的,适合大批量的部署。
有了服务器,图中还提及了代理IP分发管理系统,这个就是一个web系统,功能如下:
记录收到请求ip和端口,以及请求的当前时间。
管理系统的账号密码管理,提取IP要识别身份。
收到用户的提取IP请求,直接返回爬虫需要的代理ip和端口,供爬虫使用。
定期查看数据库中过期的代理和新增的代理,做代理数据的清理操作。
4. 成本计算 成
现在的代理IP服务商的,都流行用百万IP做噱头,虽然知道大部分是假的,但我还是想计算一下,按我们这套方案,每天的百万IP,需要多少RMB。
首先是ADSL服务器的获取IP方式,每次重启网络或者重启服务器,就可以得到一个新的IP,并且这里不算会出现重复IP的概率,全部默认新IP。
爬虫使用的代理IP,最经典的还是3-5分钟的短效代理IP,虽然达不到5分钟,但是包含了重启网络或者服务器时间,直接算5分钟一个IP。
5分钟一个IP,则一天是24*60/5 = 288(个)。
一台服务器,每5分钟切换一个IP,一天就是288个全新的IP地址。
百万IP的入门,一百万个IP,则需要3473台服务器。
关于ADSL服务器的报价,大同小异,因为代理服务器不需要很高的配置,选择基础配置ADSL服务器即可。云服务器小厂商可以找到很多的ADSL服务器。
按基本的60月/月来算,一共需要3473*60 = 208380,也就是20万,一个月20W,妥妥的每天百万IP。
当然这是实打实的服务,商用肯定是不合适的,因为IP有丢失率一说,百分之十不大,那都是钱呐。
5. 技术方案 技
技术方案不止这一种,除了squid代理服务,还有tinyproxy等其他的代理工具。
3
企业内部使用,通常会选择 自建代理IP池+购买部分代理IP 的复合方案,这样才能做到有效的利用了自由的IP,且弹性的扩充少量IP,而且成本是非常可控的。

 

posted @ 2022-11-30 00:19  AngDH  阅读(402)  评论(0编辑  收藏  举报