爬虫手册06 代理池和代理服务器搭建

article/2025/8/27 22:26:35

免费代理池的搭建

参考资料:Python3 网络爬虫开发实战(第二版)

一. 学习目标 :

参考《第9章 代理的使用》9.2节搭建自己私有的代理IP池。

二. 实验环境:

阿里云腾讯云的服务器,我是在打折和新用户优惠的时候入手的,比较便宜,均是入门级配置的服务器,阿里云99元一年,1核2G,100G硬盘,腾讯云222元3年,2核4G,80G硬盘,但每月有1200G流量限制。阿里云的系统镜像为Centos7.9,腾讯云的系统镜像为Centos7.6

三. 免费代理池搭建

3.1 步骤说明:

  1. 购买阿里云或腾讯云服务器,选择Centos7系统镜像。
  2. 使用SSH工具远程登入到你购买的服务器。
  3. 安装Anaconda Python环境:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2021.05-Linux-x86_64.sh
  4. 安装Redis数据库:http://download.redis.io/releases/redis-3.0.5.tar.gz
  5. 下载崔老师的ProxyPool项目代码:https://github.com/Python3WebSpider/ProxyPool
  6. 参考ProxyPool项目的README.md运行项目

前两步就省略了,如果有问题可以留言。

3.2 安装Anaconda Python环境

参考链接:https://zhuanlan.zhihu.com/p/64930395,下面就只列具体操作,关于命令的解释可完全参考该网址中的内容。

3.2.1 下载Anaconda

直接在官网下载挺慢的,建议使用清华镜像(可以把pip的源也换成国内的,pip install也会快很多):Tsinghua Open Source Mirror

[root@VM-4-17-centos ~]# wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2021.05-Linux-x86_64.sh

3.2.2 安装Anaconda

[root@VM-4-17-centos ~]# bash Anaconda3-2021.05-Linux-x86_64.sh

一路按回车,遇到 license 就输入yes

Do you accept the license terms? [yes|no]
[no] >>> 
Please answer 'yes' or 'no':
>>> yes

之后会指定目录安装,我选择的是默认路径安装,直接按回车即可

Anaconda3 will now be installed into this location:
/root/anaconda3- Press ENTER to confirm the location- Press CTRL-C to abort the installation- Or specify a different location below[/root/anaconda3] >>> 

提示是否要初始化Anaconda环境,我选择的是

Do you wish the installer to initialize Anaconda3
by running conda init? [yes|no]
[no] >>>

看到如下提示则安装成功:

Thank you for installing Anaconda3!===========================================================================Anaconda and JetBrains are working together to bring you Anaconda-powered
environments tightly integrated in the PyCharm IDE.PyCharm for Anaconda is available at:
https://www.anaconda.com/pycharm

3.2.3 配置环境变量

打开profile文件

vi /etc/profile

在文件最后加入如下语句(路径需要根据自己的安装位置更改):

PATH=$PATH:/root/anaconda3/bin
export PATH

3.2.4 重启服务器

重启后看到命令行前面有(base)证明Anaconda安装成功

(base) [root@VM-4-17-centos ~]#

3.3 安装redis

参考链接:https://www.cnblogs.com/zuidongfeng/p/8032505.html

3.3.1 下载源码&解压

(base) [root@VM-4-17-centos ~]# wget http://download.redis.io/releases/redis-3.0.5.tar.gz

3.3.2 编译&安装

(base) [root@VM-4-17-centos ~]# tar xvf redis-3.0.5.tar.gz
(base) [root@VM-4-17-centos ~]# cd redis-3.0.5/
(base) [root@VM-4-17-centos redis-3.0.5]# make MALLOC=libc
(base) [root@VM-4-17-centos redis-3.0.5]# cd src && make install

3.3.3 启动redis服务

刚安装完,启动下试试

(base) [root@VM-4-17-centos src]# ./redis-server
13193:C 20 Mar 09:16:59.524 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf_.__.-``__ ''-.__.-``    `.  `_.  ''-._           Redis 3.0.5 (00000000/0) 64 bit.-`` .-```.  ```\/    _.,_ ''-._(    '      ,       .-`  | `,    )     Running in standalone mode|`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379|    `-._   `._    /     _.-'    |     PID: 13193`-._    `-._  `-./  _.-'    _.-'|`-._`-._    `-.__.-'    _.-'_.-'||    `-._`-._        _.-'_.-'    |           http://redis.io`-._    `-._`-.__.-'_.-'    _.-'|`-._`-._    `-.__.-'    _.-'_.-'||    `-._`-._        _.-'_.-'    |`-._    `-._`-.__.-'_.-'    _.-'`-._    `-.__.-'    _.-'`-._        _.-'`-.__.-'

这是在前台启动,不方便,ctrl+c终止,换成后台运行

# 设置为后台运行
(base) [root@VM-4-17-centos src]# cd ..
(base) [root@VM-4-17-centos redis-3.0.5]# vi redis.conf
# 将 daemonize no 修改为 daemonize yes
(base) [root@VM-4-17-centos redis-3.0.5]# ./src/redis-server ./redis.conf
# 查看 redis 进程是否启动
(base) [root@VM-4-17-centos redis-3.0.5]# ps aux | grep redis
root     13790  0.0  0.0 131396  1864 ?        Ssl  09:21   0:00 ./src/redis-server *:6379
root     13807  0.0  0.0 112812   980 pts/2    S+   09:21   0:00 grep --color=auto redis
# 关闭 13790 进程
(base) [root@VM-4-17-centos redis-3.0.5]# kill 13790

这是手动开启redis服务,依然不方便,设置为开机自启服务

# 设置开机自启
(base) [root@VM-4-17-centos redis-3.0.5]# mkdir /etc/redis
(base) [root@VM-4-17-centos redis-3.0.5]# cp ./redis.conf /etc/redis/6379.conf
(base) [root@VM-4-17-centos redis-3.0.5]# cp ./utils/redis_init_script /etc/init.d/redisd
(base) [root@VM-4-17-centos redis-3.0.5]# vi /etc/init.d/redisd
# 头部加入两行,意思是,redis服务必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,关闭的优先级是10。
# chkconfig:   2345 90 10
# description:  Redis is a persistent key-value database
(base) [root@VM-4-17-centos redis-3.0.5]# service redisd start
Starting Redis server...
(base) [root@VM-4-17-centos redis-3.0.5]# ps aux | grep redis
root     15326  0.0  0.0  27700  1876 ?        Ssl  09:31   0:00 /usr/local/bin/redis-server *:6379
root     15330  0.0  0.0 112812   976 pts/2    S+   09:31   0:00 grep --color=auto redis

只做到这还不行,还得参考 https://blog.csdn.net/qq_40606798/article/details/82286273 链接中的方法三

# 修改 /etc/rc.d/rc.local 这个文件,末尾添加 service redisd start
(base) [root@VM-4-17-centos redis-3.0.5]# vi /etc/rc.d/rc.local
# 保存退出,确保/etc/rc.d/rc.local文件有执行权限
# 重启服务器,检查 redis 是否自动开启

**很重要:**这里建议把 /etc/rc.d/rc.local 备份一下,因为后面的步骤可能会清空这个文件,执行下面命令

(base) [root@VM-4-17-centos redis-3.0.5]# cp /etc/rc.d/rc.local /etc/rc.d/rc.local.bak

3.4 部署ProxyPool项目

3.4.1 下载ProxyPool项目源码

git clone https://github.com/Python3WebSpider/ProxyPool.git

README.md里要求执行这条git命令,但我执行了很多次都说连接不上git服务器,因此我是通过本地浏览器下载后通过FTP上传到服务器上的。

3.4.2 解压项目

(base) [root@VM-4-17-centos ~]# unzip ProxyPool-master.zip
(base) [root@VM-4-17-centos ~]# cd ProxyPool-master

3.4.3 运行项目

接下来的步骤就有点蠢了,原本项目文件里的requirements.txt文件可以一步完成这些步骤,但我这里直接执行这条命令

(base) [root@VM-4-17-centos ProxyPool-master]# pip install -r requirements.txt

发现会报错,因此我是通过多次启动项目,根据报错信息来安装缺少的依赖包,所有缺少的依赖包安装好后,项目就可以运行了。其中有的报错信息提示的依赖包和要安装的包名略有不同,如:fake_headers,实际安装的应该是 fake-headers

# 启动项目
(base) [root@VM-4-17-centos ProxyPool-master]# python run.py
# 看报错信息,安装依赖包,比如:
(base) [root@VM-4-17-centos ProxyPool-master]# pip install redis
(base) [root@VM-4-17-centos ProxyPool-master]# pip install environs
(base) [root@VM-4-17-centos ProxyPool-master]# pip install loguru
(base) [root@VM-4-17-centos ProxyPool-master]# pip install retrying
(base) [root@VM-4-17-centos ProxyPool-master]# pip install fake-headers
(base) [root@VM-4-17-centos ProxyPool-master]# pip install pyquery
(base) [root@VM-4-17-centos ProxyPool-master]# pip install aiohttp

当运行后不因为依赖包报错,并且输出大量日志信息时,说明项目成功运行起来了。

3.4.4 开启服务器5555和6379端口的访问

5555端口是ProxyPool项目的IP代理API接口,访问服务器公网IP的5555端口的/random路径即可获取一个筛选出来的可用免费代理IP。

6379端口是Redis数据库的默认端口,开启后可以通过RDM软件远程连接Redis数据库,检查当前数据库内的免费代理IP。

不同云服务器的端口开启方式不同,阿里云是安全组,腾讯云是防火墙

下面是腾讯云设置后的样子

在这里插入图片描述

3.4.5 访问 /random 接口

在这里插入图片描述

看到这个画面就证明免费代理IP池已经运行起来了。

3.5 收尾工作

此时我重启了下服务器,并运行项目代码,但是发现Redis服务没有开启,奇怪,前面明明已经设置了开机自启Redis了,为什么现在又不行了呢?我检查了 /etc/rc.d/rc.local 文件,发现该文件被清空了,天啦噜,为了解决该问题,我又重新走了一遍上面的所有过程,并在3.3.3节的最后加入了备份该文件的操作,当再次发现该文件内容被清空时,只需要将之前备份的文件还原就可以了。

另外的python run.py命令会在SSH远程连接中断后,程序会停止运行

因此在项目目录下新建一个脚本文件 start.sh

(base) [root@VM-4-17-centos ProxyPool-master]# vi start.sh
nohup python run.py > log.txt 2>&1 &

保存后并执行

(base) [root@VM-4-17-centos ProxyPool-master]# chmod u+x start.sh

之后运行项目只需要执行命令,就可以了,并且所有的日志都会输出到 log.txt 文件中

# 启动程序
(base) [root@VM-4-17-centos ProxyPool-master]# ./start.sh
# 查看日志
(base) [root@VM-4-17-centos ProxyPool-master]# tail -f log.txt

保存后并执行

(base) [root@VM-4-17-centos ProxyPool-master]# chmod u+x start.sh

之后运行项目只需要执行命令,就可以了,并且所有的日志都会输出到 log.txt 文件中

# 启动程序
(base) [root@VM-4-17-centos ProxyPool-master]# ./start.sh
# 查看日志
(base) [root@VM-4-17-centos ProxyPool-master]# tail -f log.txt

http://chatgpt.dhexx.cn/article/bOWkYI2t.shtml

相关文章

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)

代码是正经代码,但是程序员正不正经就不知道了。 ​ 前言 在使用爬虫对某些网站进行爬取时,为了不让网站发现我们的ip,模拟其他用户ip地址去访问网站。也就相当于间接的去访问网站,流程如图: 我们使用到代理服务器&…

Python爬虫进阶 - win和linux下selenium使用代理

目录 Windows selenium配置 下载地址 Chrome Chromedriver 版本对应关系 实践测试 操作元素 浏览器操作 获取元素信息 鼠标操作 实战demo selenium添加代理 Linux selenium配置 检查服务器环境 下载安装第三方库(最简单版) 实践测试 代码…

Python自助爬虫代理ip模块

短小无比的前言: 代理对于爬虫来说可是很重要的一环,尤其在对于大量数据的时候,一不小心自己ip挂了,要么你换网,要么你等个几小时恢复 之后你上网查阅了种种办法,跨越种种艰难险阻,数以堆计的bu…

python爬虫之requests库使用代理方式

在看这篇文章之前,需要大家掌握的知识技能: python基础html基础http状态码 让我们看看这篇文章中有哪些知识点: get方法post方法header参数,模拟用户data参数,提交数据proxies参数,使用代理进阶学习 安装…

爬虫代理IP哪家好?

前言 随着大数据时代的到来,爬虫已经成了获取数据的必不可少的方式,做过爬虫的想必都深有体会,爬取的时候莫名其妙 IP 就被网站封掉了,毕竟各大网站也不想自己的数据被轻易地爬走。 对于爬虫来说,为了解决封禁 IP 的问题,一个有效的方式就是使用代理,使用代理之后可以让…

Python爬虫基础-使用代理

为什么需要代理? 我们爬取数据的时候,开始可以正常爬取,但是过了一段时间,网站可能就会提示“您的IP访问频率过高”,然后就无法正常访问网站。 这是因为网站采取了反爬策略,某个ip访问频率超过一个阈值后&…

Python爬取代理IP

在一些网页的内容爬取过程中,有时候在单位时间内如果我们发送的请求次数过多,网站就可能会封掉我们的IP地址,这时候为了保证我们的爬虫的正常运行,我们就要使用代理IP。 下面来介绍如何构建自己的IP池。 我们用快代理来获取代理i…

流量数据分析的方法学习

1、看数字和趋势(以电商网站为例) 2、维度分解 3、用户分群(又叫用户画像) 4、转化漏斗 5、行为轨迹 关注行为轨迹,是为了真实了解用户行为。通过大数据手段,还原用户的行为轨迹,有助于增长团队…

恶意流量分析(一)

在分析恶意样本时,样本可能包含网络行为,比如样本从C2服务器上请求下载后续病毒文件。所以对于在病毒分析的角度,对恶意流量的分析也是不可避免的。在这里通过恶意流量习题(malware-traffic-analysis)对恶意流量进行入…

APP流量分析

分析参数 发送流量、接收流量 流量统计方法 抓包&#xff1a;干扰因素多&#xff0c;其他APP、安卓自带TCP收发长度统计功能 #找到包名 adb shell pm list packsges -3 #找到UID adb shell ps | grep <包名> #找到目录 adb shell cat /proc/9045<uid>/status #…

如何进行网站流量分析(一)

如何进行网站流量分析&#xff08;一&#xff09; 流量分析整体来说是一个内涵非常丰富的体系&#xff0c;整体过程是一个金字塔结构&#xff1a; 金字塔的顶部是网站的目标&#xff1a;投资回报率&#xff08;ROI&#xff09;。 网站流量分析模型举例 1 网站流量质量分析&a…

流量与日志分析

文章目录 1.流量与日志分析1.1系统日志分析1.1.1window系统日志与分析方法1.1.2linux 系统日志与分析方法 1.2 web日志分析iis 日志分析方法apache日志分析**access_log****error_log** nginx日志分析tomcat 日志分析主流日志分析工具使用 1.流量与日志分析 日志&#xff0c;是…

攻防世界—流量分析1

题目&#xff1a;流量分析&#xff0c;你知道这堆流量做了什么事情吗&#xff0c;你能恢复出来flag吗&#xff1f; 拿到附件以后&#xff0c;解压出一个抓包文件&#xff0c;通过wireshark打开&#xff0c;发现大量HTTP报文。 随机查看一个HTTP访问的URL&#xff0c;经过URL解…

流量分析:如何分析数据的波动?

流量分析。 内容分为四部分&#xff1a; 背景&#xff1b; 渠道分析&#xff1b; 转化与价值分析&#xff1b; 流量波动逻辑性分析。 背景 建立产品指标体系和报表之后&#xff0c;分析师和业务方最重要的事情就是每天看各种数据&#xff0c;而这个看数据的过程就是流量分…

网站流量分析数据指标

如果如果把一个网站比作一家超市&#xff0c;运营网站就像打理超市的生意&#xff0c;那么目标就是让访客多停留、多购买、多办几张会员卡。为了达成这个目标&#xff0c;我们先要了解当前的情况&#xff0c;比如有多少人走进了超市、看了多少件产品、多少人办理了会员卡;类似地…

产品流量分析

年底要接的数据需求好多&#xff0c;博客好久没更新了。这次和大家分享一下最近对流量分析的一些理解。 流量是产品获得用户的第一步&#xff0c;没有流量就没有转化与营收。对于流量的分析在产品日常运营效果监控中有着非常重要意义。下面我们就流量的来源与流向分析中需要关…

基于流量的分析理解

文章目录 一、Wirshark1.1 数据过滤1.2 数据流跟踪1.3 数据提取 二、流量分析过程 一、Wirshark Wireshark是一个可以进行数据包的捕获和分析的软件。网卡在对接收到的数据包进行处理之前,会先对它们的目的地址进行检查,如果目的地址不为本机的话,就会丢弃这些数据,相反就会将…

流量分析基础篇

流量分析 1.流量分析是什么? 网络流量分析是指捕捉网络中流动的数据包,并通过查看包内部数据以及进行相关的协议、流量分析、统计等来发现网络运行过程中出现的问题。 CTF比赛中,通常比赛中会提供一个包含流量数据的 PCAP 文件,进行分析。 2.数据包分析 总体把握– 协…

流量告警分析思路

目录 01-流量告警分析中常见的问题 1.安全告警DDOS 2.误报问题始终无法很好的闭环 3.威胁信息验证受阻 4.宽泛的只是涉略面 02-分析前准备工作及注意事项 03安全威胁事件分析 WEB特征检测-SQL注入、XSS、后门访问 WEB特征检测-SQL注入 WEB特征检测-XSS攻击 WEB特征检测…

流量分析入门

前言 个人一直对CTF比赛中MISC中流量分析这一块感兴趣…但好像之前参加的培训没有涉及到。正好看到了一些相关书籍资料&#xff0c;自己向前辈们学习以后整理一些资料来总结一下&#xff08;本人是个很菜…还没入门的pwn手&#xff09; 互联网五层模型 在计算机网络这门课中…