废话:我有一台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

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

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

3、测试密码文件

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

4、配置squid.conf文件

vi /etc/squid/squid.conf
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

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

启动
#启动start(停止stop)
systemctl start squid.service
#配置开机自启动
systemctl enable squid.service
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')

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

requests客户端连接
import requestsproxies = {"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)

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

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

  1. 【原创】 shell一键配置squid高匿代理服务器 high-Anonymity

    部署了大量机器,需要做squid代理用 直接上码 # 一.######### Local shell ######### # sshpass 免于ssh首次登录远程机器需要交互输入密码的繁琐.  # ...

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

    Squid 介绍 Squid是一个缓存internet数据的一个软件,它接收用户的下载申请,并自动处理所下载的数据.也就是说,当一个用户象要下载一个主页时,它向Squid发出一个申请,要Squid替它 ...

  3. Squid三种工作模式搭建及配置文件解析

    目录 一.Squid软件及配置文件简介 1.Squid软件 2.Squid配置文件详解 二.Squid三种工作方式搭建 传统模式搭建流程: 1.按照网络拓扑图搭建网络环境: 2.web服务器端安装Ap ...

  4. 使用squid在阿里云服务器(centos7)上搭建自己的代理服务器

    我记录的是用squid来完成的代理服务器. 安装 检测是否安装: # which squid /usr/bin/which: no squid in (/usr/local/sbin:/usr/loc ...

  5. 基于KSWEB服务器与NAT123端口映射技术-----利用闲置安卓手机搭建网站服务器

    想必各位小伙伴现在在家都闲得无聊,吃饭睡觉,就没事干了,闲来无事,我就想起了我上初中开始,一直有一个网站梦,就是想有一天,搭建一个个人的专属网站!嘻嘻嘻,所以一直就坚持钻研计算机,悲哀的是家里穷没有钱 ...

  6. 使用squid 解决内网服务器通过设置代理访问外网

    背景 线上算法服务有一个偶尔触发的逻辑需要访问三方的api,由于生产服务器无法访问外网,因此一直使用代理进行外网访问,最近代理服务器被重装了,由于该代理是前同事装的,导致这台服务器重装时候没有通知相应 ...

  7. docker容器cpu高问题排查_干货详解:一文教你如何利用阿里开源工具,排查线上CPU居高问题...

    前言 在我们开发过程中,无法避免的会出现所谓的垃圾代码,导致服务器的CPU一直处于100%.但我们应用已经上线,导致服务器CPU居高,但又不知道哪边出现的问题,我们应该怎么去找出哪边的代码出现问题呢? ...

  8. squid端口转发_Squid服务器三种代理方式详解

    ACL(Access Control List,访问控制列表) 可以从客户机的IP地址.请求访问的URL/域名/文件类型.访问时间.并发请求数等各方面进行控制. 配置文件: http_port 312 ...

  9. 如何使用闲置的云服务器搭建一个属于自己的私人云网盘(可道云kodbox)

    你是否有过网盘下载速度只有十几KB,时不时出现网盘的文件被删除的问题,不如自己搭建一个云网盘吧,只需要一云服务器,即可搭建一个跟某度云一样的云盘.可以自由下载,不限制网速,随时都可上传下载.这篇文章我 ...

最新文章

  1. KVM虚拟化实践(一)
  2. Java String split 使用详解、split 方法存在的一些坑
  3. C语言:指针的几种形式
  4. postgres数据库最大连接数
  5. 什么东西都要用一句话总结出来:这是最重要的
  6. mysql数据库基本操作总结与归纳
  7. 基于ARM 构架(带MMU)的copy_from_user与copy_to_user详细分析
  8. Spring IOC核心原理分析
  9. JAVA中用于处理字符串的 三兄弟
  10. 特斯拉Model Y Performance高性能版车型价格上调一万元
  11. sql server 触发器
  12. PDO 查询mysql返回字段整型变为String型解决方法
  13. Makefile 管理工具 — Automake and Autoconf
  14. db2数据库基础知识
  15. Arduino 交通灯实验
  16. 每日简报 4月22日简报新鲜事 每天一分钟 了解新鲜事
  17. 201771010112罗松《面向对象程序设计(java)》第八周学习总结
  18. 服务器修改bios中uefi,服务器bios uefi设置
  19. 帝国Empire采集-帝国如何免费采集
  20. PaddyShop开源商城源码(可免费商用)

热门文章

  1. 龙迅LT7911D Type-C/DP/eDP to MIPI DSI/CSI/LVDS 信号转换芯片
  2. Ansys在高分屏电脑下的显示以及Fluent的图形显示界面黑屏问题
  3. 卤化铅钙钛矿量子点(LHP-QDs)/N719染料敏化太阳能电池
  4. Python如何优雅地可视化目标检测框
  5. 解决JDK13版本后IntelliJ IDEA导入新字体文件
  6. Python开发【第二章】python入门
  7. 【TensorFlow】基础教程
  8. 微信小游戏个人开发者如何盈利
  9. 跳转打开多个标签导致浏览器崩溃问题
  10. Revit翻模教程:怎么在体量内绘制圆锥?