Linux + ProxyPool 搭建属于爬虫代理IP池

el/2024/3/2 11:27:26

前言:

当爬虫达到一定速度时,大家都会遇到封Ip的情况,而搭建代理ip池是解决的最好方法,网络上有很多优秀的付费代理,但是作为白嫖党的我们又怎么能付钱那,本文将教会大家用一个成熟的开源项目搭建代理池。

项目介绍:

ProxyPool

在这里插入图片描述

爬虫代理IP池项目,主要功能为定时采集网上发布的免费代理验证入库,定时验证入库的代理保证代理的可用性,提供API和CLI两种使用方式。同时你也可以扩展代理源以增加代理池IP的质量和数量。

ProxyPool

爬虫代理IP池项目,主要功能为定时采集网上发布的免费代理验证入库,定时验证入库的代理保证代理的可用性,提供API和CLI两种使用方式。同时你也可以扩展代理源以增加代理池IP的质量和数量。

文档地址: document
支持版本:python2/python3

运行项目

下载代码:
  • git clone
git clone git@github.com:jhao104/proxy_pool.git
  • releases
https://github.com/jhao104/proxy_pool/releases 下载对应zip文件
安装依赖:
pip install -r requirements.txt
更新配置:
# setting.py 为项目配置文件# 配置API服务HOST = "0.0.0.0"               # IP
PORT = 5000                    # 监听端口# 配置数据库DB_CONN = 'redis://:pwd@127.0.0.1:8888/0'# 配置 ProxyFetcherPROXY_FETCHER = ["freeProxy01",      # 这里是启用的代理抓取方法名,所有fetch方法位于fetcher/proxyFetcher.py"freeProxy02",# ....
]

启动项目:

# 如果已经具备运行条件, 可用通过proxyPool.py启动。
# 程序分为: schedule 调度程序 和 server Api服务# 启动调度程序
python proxyPool.py schedule# 启动webApi服务
python proxyPool.py server

使用

  • Api

启动web服务后, 默认配置下会开启 http://127.0.0.1:5010 的api接口服务:

apimethodDescriptionarg
/GETapi介绍None
/getGET随机获取一个代理None
/get_allGET获取所有代理None
/get_statusGET查看代理数量None
/deleteGET删除代理proxy=host:ip
  • 爬虫使用

如果要在爬虫代码中使用的话, 可以将此api封装成函数直接使用,例如:

import requestsdef get_proxy():return requests.get("http://127.0.0.1:5010/get/").json()def delete_proxy(proxy):requests.get("http://127.0.0.1:5010/delete/?proxy={}".format(proxy))# your spider codedef getHtml():# ....retry_count = 5proxy = get_proxy().get("proxy")while retry_count > 0:try:html = requests.get('http://www.example.com', proxies={"http": "http://{}".format(proxy)})# 使用代理访问return htmlexcept Exception:retry_count -= 1# 删除代理池中代理delete_proxy(proxy)return None
console.log("公众号:虫术")
console.log("wx:spiderskill")
欢迎大家前来交流

http://www.ngui.cc/el/3376928.html

相关文章

IDA动态调试

1、把本地server文件推送进手机目录 adb push android_x86_server(cpu型号要对应 模拟器是x86) /data/local/tmp/ 2、进入手机shell adb shell 3、进入手机tmp目录 cd /data/local/tmp/ 4、修改权限 chmod 777 android_server 5、运行 ./android_server 6、在本地执行…

CORS 头缺少 ‘Access-Control-Allow-Origin‘解决办法

服务端 from flask import Flask, request,make_response,jsonify app.route("/api/page1/run/list", methods["GET"]) def check():res make_response(jsonify({code: 0, data: {list:data}}))res.headers[Access-Control-Allow-Origin] *res.headers[…

关于axios的post用法

axios.post(, {data: params },{headers: {Access-Control-Allow-Origin:*, //解决cors头问题Access-Control-Allow-Credentials:true, //解决session问题Content-Type: application/x-www-form-urlencoded; charsetUTF-8 //将表单数据传递转化为form-data类型},withCredentia…

Python用python-docx抓取公众号文章写入word

一、安装包 pip3 install python-docx二、了解python-docx from docx import Document from docx.shared import Inchesdocument Document()#添加标题,并设置级别,范围:0 至 9,默认为1 document.add_heading(Document Title, 0…

flask给使用模板给js传参

用echarts时候发现eval处理传过来的值js里会报错,采用以下方式传值。 data: {{ dt_list | safe }}完美解决

python2忽略ssl证书验证问题

问题: requests.exceptions.SSLError: HTTPSConnectionPool(host*****, port****)解决办法: import urllib3 urllib3.disable_warnings() #verifyFalse requests.post(urlurl, paramsparams, headersheaders, datapost_params,verifyFalse)

MagiskHide android ro.debuggable属性调试修改

如果想要调试android 的程序,以下两个条件满足一个就行。 1、是apk的配置文件内的AndroidManifest.xml的 android:debuggable=”true”。 2、是修改/default.prop中ro.debuggable=1。 第一种通常是解包添加属性再打包,随着加壳软件以及apk校验等,容易出现安装包异常。 第…

“WCHAR *“ 类型的实参与 “LPSTR“ 类型的形参不兼容

在VS2013编译器中直接输入的字符串常量(如“abc”)默认是以const char *的格式(即ANSI编码)储存的,因此会导致类型不匹配的编译错误。 方法是右击“解决方案资源管理器”中的项目,“属性→配置属性→常规→…

将抓包证书推至安卓系统目录

1、找到证书文件 windows目录: C:\Users\用户名.mitmproxy,并将mitmproxy-ca-cert.pem 复制一份重命名为:c8750f0d.0 。 2、传入手机系统目录并给予权限(root权限下 #1 推至sdcard目录 adb push c8750f0d.0 /sdcard#2 切换至证书目录并挂载系统目录为…

C++ HttpWebRequest发送POST请求,参数以json格式传递

string PostUrl "URL";JObject patientinfo new JObject();patientinfo["name"] "TOM";patientinfo["age"] 12;string sendData JsonConvert.SerializeObject(patientinfo);//eg: 发送Url需要的格式:sendData{"…