搭建IP代理池 - ProxyPool

news2024/11/16 8:38:18

前言

在爬虫开发中,我们经常会碰到ip封禁,访问限制的问题,今天主要分享个我在开发中用到过比较好用的ip代理池,希望有需要的小伙伴提供到帮助~

简介

ProxyPool是一个简易高效的代理池,他可以在windows上搭配redis使用,也可以在Docker使用

提供如下功能:
1、定时抓取免费代理网站,简易可扩展。
2、使用 Redis 对代理进行存储并对代理可用性进行排序。
3、定时测试和筛选,剔除不可用代理,留下可用代理。
4、提供代理 API,随机取用测试通过的可用代理。

下载地址:https://github.com/Python3WebSpider/ProxyPool.git

运行方式

1、Docker

如果使用 Docker,则需要安装如下环境:
Docker
Docker-Compose
安装方法自行搜索即可。
官方 Docker Hub 镜像:germey/proxypool

Docker 运行
只需运行 docker-compose up 即可

运行结果类似如下:

redis        | 1:M 19 Feb 2020 17:09:43.940 * DB loaded from disk: 0.000 seconds
redis        | 1:M 19 Feb 2020 17:09:43.940 * Ready to accept connections
proxypool    | 2020-02-19 17:09:44,200 CRIT Supervisor is running as root.  Privileges were not dropped because no user is specified in the config file.  If you intend to run as root, you can set user=root in the config file to avoid this message.
proxypool    | 2020-02-19 17:09:44,203 INFO supervisord started with pid 1
proxypool    | 2020-02-19 17:09:45,209 INFO spawned: 'getter' with pid 10
proxypool    | 2020-02-19 17:09:45,212 INFO spawned: 'server' with pid 11
proxypool    | 2020-02-19 17:09:45,216 INFO spawned: 'tester' with pid 12
proxypool    | 2020-02-19 17:09:46,596 INFO success: getter entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
proxypool    | 2020-02-19 17:09:46,596 INFO success: server entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
proxypool    | 2020-02-19 17:09:46,596 INFO success: tester entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

可以看到 Redis、Getter、Server、Tester 都已经启动成功。
这时候访问 http://localhost:5555/random 即可获取一个随机可用代理。
当然你也可以选择自己 Build,直接运行如下命令即可:

docker-compose -f build.yaml up

如果下载速度特别慢,可以自行修改 Dockerfile,修改:

- RUN pip install -r requirements.txt
+ RUN pip install -r requirements.txt -i https://pypi.douban.com/simple

2、常规方式

常规方式要求有 Python 环境、Redis 环境,具体要求如下:
Python>=3.6
Redis

常规方式运行

本地安装 Redis、Docker 启动 Redis、远程 Redis 都是可以的,只要能正常连接使用即可。
首先可以需要看一下环境变量,代理池会通过环境变量读取这些值。
设置 Redis 的环境变量有两种方式,
一种是分别设置 host、port、password,
另一种是设置连接字符串,设置方法分别如下:
设置 host、port、password,如果 password 为空可以设置为空字符串,示例如下:

export PROXYPOOL_REDIS_HOST='localhost'
export PROXYPOOL_REDIS_PORT=6379
export PROXYPOOL_REDIS_PASSWORD=''
export PROXYPOOL_REDIS_DB=0

1、首先使用 git clone 将源代码拉到你本地, https://github.com/Python3WebSpider/ProxyPool.git
在这里插入图片描述

2.进入proxypool目录,修改settings.py文件,PASSWORD为Redis密码,如果为空,则设置为None。(新装的redis一般没有密码。)

3.接着在你 clone 下来的文件目录中(就是这个ProxyPool存的电脑路径 )安装相关所需的依赖包:
pip install -r requirements.txt
在这里插入图片描述
4.接下来开启你的 redis服务,直接cmd 打开dos窗口,运行:redis-server.exe
即可开启redis服务器。redis 的默认端口就是 6379
在这里插入图片描述
5.接着就可以运行 run.py 了。
运行之后会启动 Tester、Getter、Server,这时访问 http://localhost:5555/random 即可获取一个随机可用代理。
在这里插入图片描述
注意此处可以用两种方式运行代理池,一种是 Tester、Getter、Server 全部运行,另一种是按需分别运行。
或者如果你弄清楚了代理池的架构,可以按需分别运行,命令如下:

python3 run.py --processor getter
python3 run.py --processor tester
python3 run.py --processor server

6.运行 run.py 以后,你可以打开你的redis管理工具,或者进入redis里面查看,这时候在你的 redis 中就会存入很多已经爬取到的代理 ip 了
在这里插入图片描述
7.项目跑起来之后保持运行,此时redis里面存了ip,就可以访问这个代理池了。

在上面的图中,可以看到有这么一句话 Running on http://0.0.0.0:5555/ (Press CTRL+C to quit)
这就是告诉我们随机访问地址URL是多少了
你可以在浏览器中随机获取一个代理 ip 地址:http://0.0.0.0:5555/random
你就浏览器输入:
在这里插入图片描述

Python获取代码

import requests

PROXY_POOL_URL = "http://localhost:5555/random"
def get_proxy():
	try:
		response = requests.get(PROXY_POOL_URL)
		if response.status_code == 200:
			return response.text
	except ConnectionError:
		return None

if name == ‘main’:
	print(get_proxy())

正常请求如下图:
在这里插入图片描述
好了,自此你本地ip代理池就搭建好了,希望可以帮助到大家~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/697406.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【强化学习】常用算法之一 “SARSA”

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

飞控的安全性设计

针对安全性设计,就必须先考虑故障情况。一般来讲,飞控故障有以下几个方面: 1、通讯故障 飞行器与地面端(遥控器或地面站等设备)需要进行实时通信,如果通信发生故障,后果很严重,因此…

赛效:WPS文字(Word)中的页面背景如何删除

1:打开一个有背景颜色的文档。 2:在“页面布局”选项卡里点击“背景”,在下拉菜单里点击“删除页面背景”。 3:接下来我们看到,文档背景已经恢复了默认的颜色。 如果你想了解更多办公软件以及办公技巧,可以…

青大数据结构【2019】【五算法设计】

关键字: 简单选择排序、二叉树后序遍历 1) void Countsort(int A[],int B[],int n) {int i,j,count;for(i=0;i<n;i++){count=0;for(j=0;j<n;j++)if(A[j]<A[i])count++;B[count]=A[i];}} 2) 每个元素都要与n个元素(含自身)进行比较,故比较次数为n方 3) …

Redis之数据类型String、List、Hash、Set、Sorted Set(详细)

一、String数据类型 1、SET/GET/APPEND/STRLEN &#xff08;1&#xff09; APPEND &#xff08;2&#xff09; SET/STRLEN 2、 INCR/ DECR/INCRBY/DECRBY &#xff08;1&#xff09;INCR/ DECR &#xff08;2&#xff09; INCRBY/DECRBY INCRBY key increment&#xff1…

JavaWed第二章:HTML和CSS的知识制作静态网页

目录 前言 一.HTML和CSS的介绍 &#x1f496;HTML的基本框架 二.HTML常用标签大全 三.资源路径讲解 &#x1f496;路径 &#x1f496;图片 img标签讲解 &#x1f496;超链接标签讲解 四.CSS &#x1f496;CSS的引入方式 五.HTML页面布局 &#x1f496;盒子模型介绍 …

小米手机文件误删还有救,这10个工具请收好!

说到智能手机&#xff0c;小米以其令人印象深刻的功能和实惠的价格成为一个受欢迎的品牌。然而&#xff0c;与任何其他智能手机一样&#xff0c;小米设备上可能会由于各种原因而发生数据丢失。幸运的是&#xff0c;有多种恢复软件可以帮助您从小米设备中检索丢失或删除的数据。…

vue2 配置less

在vue2中配置less&#xff0c;需要安装less和less-loader npm install less less-loader5 --save-dev 直接安装less-loader会报错&#xff0c;提示如下&#xff1a; 安装less 3.0.0版本 npm install less3.3.0 然后在安装less-loader就ok啦。 在vue中使用&#xff0c;设置…

三维空间离散点如何拟合平面?

文章目录 0.引言1.算法原理2.算法实现 0.引言 在点云建模过程中&#xff0c;有时需要对扫描建模的点云进行标定&#xff0c;在实际使用中往往以地面做为参照平面&#xff0c;需要将扫描的三维空间点云进行拟合平面&#xff0c;以便纠正扫描结果。本文对三维空间离散点拟合平面算…

学习Vue3——watch(侦听器)

基本用法 watch有三个参数 第一个参数是监听源 第二个参数回调函数cb&#xff08;newVal,oldVal&#xff09; 第三个参数一个options配置项 监听单个属性 <template><div>姓:<input v-model"lastName" type"text" /></div><…

PostgreSQL 自增主键冲突问题分析及解决办法

创建一个test表 create table test (id integer default nextval(test_id_seq::regclass) not nullconstraint test_pkprimary key,c1 integer );插入数据 insert into test (c1) values (1); insert into test (c1) values (2); insert into test (c1) values (3);发现自增I…

自定义指令实现按钮加密

1. 需求描述 给按钮加一个密码保护&#xff0c;输入的密码正确之后才能进行下一步操作。 2. 实现思路 1. 直接在点击事件里面处理密码校验&#xff0c; <!-- template --> <el-button type"warning" click"handlePub">发布</el-button&…

Unity Android打包成Apk之后 紫屏 无内容

打包成Apk之后 打开游戏 过完logo是紫色的屏幕什么都没有 解决方法&#xff1a; 打开项目的目录&#xff1a; 删除除了 .vscode assets package 之外的所有文件夹 然后重新打开就可以了

【owt】发送侧接收并处理rtcp包 调用堆栈

发送测接收rtcp包并处理大神分析的RTCPReceiver处理的rtcp包 WebRTC源码之RTCPReceiver源码分析 可以看到xr是207MediaStream::read 中 通过 fb_sink_->deliverFeedback(std::move(packet)); 分发rtcp fbsink是 VideoFramePacketizer int VideoFramePacketizer::deliverFee…

HTML入门基础知识

一、简介 什么是HTML&#xff1f; HTML是用来描述网页的一种语言。它指的是超文本标记语言&#xff0c;是一种标记语言&#xff0c;是一套标记。标签HTML使用标记标签来描述网页 HTML基本结构如图&#xff1a; 二、基础内容 HTML的基本标签 HTML 标签 HTML 标记标签通常被称为…

Linux 的逻辑世界与 Windows 的复杂性

Linux的逻辑世界与Windows的复杂性 作为操作系统&#xff0c;Linux 和 Windows 都在全球用户心中赢得了一席之地。 这两种系统都很常用&#xff0c;每种都有不同的原因和目的。 作为一名有用的 AI 助手&#xff0c;我有机会广泛使用 Linux 和 Windows&#xff0c;并且我想探索…

rewrite实验示例

一、基于域名跳转 要求用户输入旧域名可以直接跳转到新域名 vim /usr/local/nginx/conf/nginx.conf systemctl restart nginx.service 查看元素可以看到返回301&#xff0c;实现了永久重定向跳转&#xff0c;而且域名后的参数也正常跳转 二、基于客户端 IP 访问跳转 要求除…

ncnn vulkan 以类的方式推理示例

ncnn vulkan 以类的方式推理示例 flyfish 环境 ncnn-android-vulkan.zip 20230517 opencv 4.6.0 开发环境Qt 6.2.4 模型 yolov5_62 构建套件 Clang arm64-v8a ndk 25 和api 28版本如下 头文件 #ifndef YOLOV5GPU_H #define YOLOV5GPU_H#include <string> #include &l…

C#调用Matlab--解决外部引用包问题(全网唯一)

1、好久没写文章了&#xff0c;今天给大家带来的是C#调用matlab程序的解决方案。 2、应用场景&#xff1a;C#调用matlab网上已经有很多文章了&#xff0c;但本文主要解决的是无法调用时的问题。 如当Matlab调用外部包&#xff08;CVX、IPOPT、gurobi、yalmip等优化求解器&…

STM32--DHT11温湿度传感器

本文介绍基于STM32F103实现的DHT11温湿度传感器数据采集及显示&#xff0c;完整代码见文末链接 一、DHT11传感器简介 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术&#xff0c;确保产品具有极高的可…