CentOS7 Squid 网络代理安装和配置

爬虫代理的作用

在我们的爬虫系统中,如果在一台服务器上不停的访问通一个目标站点,很有可能因为对方的发爬虫策略而将您的爬虫请求给阻止,导致您无法获取网站的信息。所以我们一般采用一个代理池的方式,不停的切换代理,将爬虫的请求伪装成为不同代理发起的,从而避开这种问题。这里以 centos7 和 squid 为例介绍如何建立一个 http 或者 https 的代理服务器。

软件安装

该软件需要使用 openssl 组件,所以如果没有安装请执行如下命令进行安装

yum install openssl

首先检查是否已经安装了 squid 软件。执行如下的命令

rpm -qa squid

如果显示 package squid is not installed 则表示没有安装,否则会显示具体的安装包信息。如果没有安装,则执行安装命令如下

yum install -y squid*

结束后,再执行检查命令,则显示结果如下

[root@localhost ~]# rpm -qa squid
squid-3.5.20-12.el7.x86_64

软件配置

squid 的配置文件默认是 /etc/squid/squid.conf 文件。默认情况下,squid 只允许有限几个内网地址段来访问。所以我们在的 acl localcal 部分加入如下的内容:

acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src 0.0.0.0/20

上面一行是原来有的,下面一个行是我们先加入的。然后我们改一下默认的端口号

#http_port 3128
http_port 5872

最后修改一下访问日志配置

coredump_dir /var/spool/squid
access_log /var/log/squid/access.log

下面一行设置了访问日志的文件为 /var/log/squid/access.log

启动服务

首先需要在防火墙中开放刚才配置的端口 5872 。执行如下命令

firewall-cmd --zone=public --add-port=5872/tcp --permanent
firewall-cmd --reload

这个命将 5872 端口加入到防火墙的开发端口列表中持久化保存,并且重新载入防火墙策略,让其生效

然后执行命令启动

systemctl start squid

启动后,我们执行命令命令

[root@localhost ~]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1689/master         
tcp        0      0 0.0.0.0:15678           0.0.0.0:*               LISTEN      20050/sshd          
tcp6       0      0 :::5872                 :::*                    LISTEN      27903/(squid-1)    

可以看到,squid 服务已经在端口 5872 上开始监听了

使用和监控

已 chrome 为例。打开 chrome “设置菜单”,在底部展开“高级”,在底部找到“打开代理设置”菜单,在对话框中点击“局域网设置”按钮,在新出现的界面中输入代理服务器的设置。如下图所示


chrome 代理设置

确定后,就可以在浏览器中使用代理服务器来访问网络了。为了看到效果,我们在浏览器上访问《不一样的 Java 日期格式化大全》 这篇文章,同时对代理服务器的访问日志进行监控,看到日志输出如下

[root@localhost ~]# tail -f /var/log/squid/access.log 
1543289079.273  16467 192.168.1.60 TCP_TUNNEL/200 3687 CONNECT upload-images.jianshu.io:443 - HIER_DIRECT/61.156.196.84 -
1543289079.274  16715 192.168.1.60 TCP_TUNNEL/200 152 CONNECT upload.jianshu.io:443 - HIER_DIRECT/150.138.176.244 -
1543289079.274  16667 192.168.1.60 TCP_TUNNEL/200 4159 CONNECT upload.jianshu.io:443 - HIER_DIRECT/150.138.176.244 -
1543289079.524      0 192.168.1.60 TCP_DENIED/403 4085 CONNECT events.jianshu.io:4006 - HIER_NONE/- text/html
1543289081.664      0 192.168.1.60 TCP_DENIED/403 4085 CONNECT events.jianshu.io:4006 - HIER_NONE/- text/html
1543289082.433      0 192.168.1.60 TCP_DENIED/403 4085 CONNECT events.jianshu.io:4006 - HIER_NONE/- text/html
1543289097.966  35623 192.168.1.60 TCP_TUNNEL/200 55584 CONNECT upload-images.jianshu.io:443 - HIER_DIRECT/61.156.196.84 -
1543289097.991  35259 192.168.1.60 TCP_TUNNEL/200 16029 CONNECT upload-images.jianshu.io:443 - HIER_DIRECT/61.156.196.84 -
1543289099.311  60913 192.168.1.60 TAG_NONE/503 0 CONNECT clients4.google.com:443 - HIER_NONE/- -
1543289100.321  38894 192.168.1.60 TCP_TUNNEL/200 23165 CONNECT upload.jianshu.io:443 - HIER_DIRECT/150.138.176.244 -
1543289109.312  47056 192.168.1.60 TCP_TUNNEL/200 10707 CONNECT upload.jianshu.io:443 - HIER_DIRECT/150.138.176.244 -

可以看到,是通过代理服务器的转发来访问的目标网站。

代理服务器鉴权

上面的代理服务器如果是在公网上提供服务的,那么所有人都能使用这个代理服务。如果我们想加入鉴权机制对这个进行限制,则需要增加其他配置。这里我们采用用户名和密码的鉴权方式,具体方法如下。
首先用 apache 的密码工具生成用户密码,如果没有的话需要先安装 httpd 软件

yum install httpd

然后生成密码。

[root@localhost ~]# htpasswd -c /etc/squid/passwd youname
New password: 
Re-type new password: 
Adding password for user youname

如果没有 htpasswd 命令,则安装 apache

yum install -y httpd

在 http_access deny all 语句之前,加入如下的配置内容

cache_dir ufs /var/spool/squid 100 16 256
cache_mem 128 MB
maximum_object_size 128 MB
cache_dir ufs /var/spool/squid 100 16 256

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm your message
auth_param basic credentialsttl 5 hours
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users

然后重启

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容

  • 只想写篇回忆文。送给正在为自己的梦想奋斗的大曼 记不清了,我们最初是如何接受对方,然后走到一起玩的样子,只记得那时...
    苏木白芨阅读 680评论 0 0
  • 文章转自原文链接 背景 随着近几年移动营销页的火爆,催生了一个中国式的名词「H5」。而 H5 最常见的形态就是类似...
    Zakerberg阅读 1,137评论 0 4