一文教你用squid将闲置的服务器搭建成爬虫使用的高匿代理服务器

举报
橙子园 发表于 2022/05/25 22:53:01 2022/05/25
【摘要】 废话:我有一台centos7的服务器,吃灰了很久,本来用来部署博客网站的,但是也完全利用不起来,浪费我的钱啊!接下来我要让它成为一个高匿的爬虫代理服务器。 场景: 为什么要搭建这个东西,而不...

废话:我有一台centos7的服务器,吃灰了很久,本来用来部署博客网站的,但是也完全利用不起来,浪费我的钱啊!接下来我要让它成为一个高匿的爬虫代理服务器。

场景:

为什么要搭建这个东西,而不直接使用爬虫代理服务商提供的代理?假设根据爬取一个网站的经验发现这个网站在爬取频率不高的情况下不会封掉IP,但是我要求代理的质量要很高,不要像一些爬虫代理服务商提供的代理一样几乎没有多少请求是通的,虽然会使用重试机制,但完全是在浪费时间(其实我只想让它不要封我正在使用的IP)。这个时候搭建一个高匿代理服务器去爬取是多么的完美。

squid简介

Squid是一个功能齐全的HTTP/1.0代理,它几乎(但不完全是——我们正在实现!)一个功能齐全的HTTP/1.1代理。Squid提供了一个丰富的访问控制、授权和日志记录环境来开发web代理和内容服务应用程序。Squid提供了一组丰富的流量优化选项,其中大多数默认情况下都是启用的,以实现更简单的安装和更高的性能。

详情查看官方网址:http://www.squid-cache.org/Doc/config/acl/

服务器安装配置步骤:

1、使用如下命令安装squid以及用来生成密码文件的httpd-tools

yum install squid -y
yum install httpd-tools -y

  
 
  • 1
  • 2

2、生成密码文件
在/etc目录下创建squid3目录,并使用htpasswd 生成用户名密码的配置文件

mkdir /etc/squid3/
htpasswd -cd /etc/squid3/passwords 用户名
#提示输入密码,比如输入123

  
 
  • 1
  • 2
  • 3

3、测试密码文件

/usr/lib64/squid/basic_ncsa_auth /etc/squid3/passwords
#输入用户名 密码
xiaoli  123
#提示ok说明成功
ok
#ctrl+c退出

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4、配置squid.conf文件

vi /etc/squid/squid.conf

  
 
  • 1
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid3/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated


#访问端口号设置
#http_port 3128 这样写会同时监听ipv6和ipv4的端口,推荐适应下面的配置方法。
http_port 0.0.0.0:9798

# 添加下面这两句可以使代理高匿
via off
forwarded_for delete

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

注:squid的日志位于/var/log/squid/目录下。高匿的原理就是将路由关掉,将forwarded_for 删除。

启动
#启动start(停止stop) 
systemctl start squid.service
#配置开机自启动
systemctl enable squid.service

  
 
  • 1
  • 2
  • 3
  • 4
Scrapy爬虫客户端连接

在minddlewares.py中添加下面代码

from w3lib.http import basic_auth_header
class CustomOneProxyMiddleware(object):
    def process_request(self, request, spider):
        request.meta['proxy'] = "https://198.168.1.3:9798"
        request.headers['Proxy-Authorization'] = basic_auth_header(
            'lih', '123')

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

"https://198.168.1.3:9798"为服务器的ip及squid配置的访问端口,‘lih’, '123’分别为服务器刚刚设置的squid的用户名密码

requests客户端连接
import requests

proxies = {
    "http": "http://user:pass@198.168.1.3:9798",
    "https": "https://user:pass@198.168.1.3:9798"
}

requests.get("http://example.org", proxies=proxies)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

user、pass为squid配置的用户名密码。

文章来源: blog.csdn.net,作者:橙子园,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/Chenftli/article/details/105864072

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。