IP_POOL-爬虫代理项目-动态代理


这个仓库 IP_POOL 是一个爬虫代理项目,旨在提供免费代理 IP 的获取、检测和管理功能。以下是对该仓库的详细介绍:

1. 项目背景和更新

  • 因很多小伙伴反馈免费 IP 可用时长短且多为透明代理不安全,作者在 2022 年 10 月 17 日更新并推荐了商业级代理 IP IPIDEA
  • 该商业代理覆盖 220 + 国家和地区,有 9000 万真实住宅 IP 资源,提供多种解决方案,支持多种协议,IP 纯净度高,还支持免费试用。

2. 环境要求

  • Python 2.7
  • 依赖库可通过 pip install -r requirements.txt 安装,包括 Flask 0.12.1、requests 2.13.0、pymongo 3.4.0。
  • 需正确安装 MongoDB 数据库。

3. 项目特点

  • 通过配置文件可对 IP 代理网站进行爬取。
  • 构建了 Web 服务,提供 API 接口方便获取代理 IP。
  • 获取与检测 IP 完全自动化。
  • 可根据 IP 代理网站的特殊性,自行扩展获取和检测脚本。

4. 数据库信息

  • 可用 IP 存储在本地 MongoDB 数据库的 free_ip 库的 proxy 集合中。
  • 数据库字段包括:
  • insert_time:插入时间,有专门脚本根据插入时间与当前时间差重新检测 IP,不可用则删除。
  • ip:可用 IP。
  • response_time:使用代理 IP 访问 target_url 的响应时间,单位为秒。
  • source:代理 IP 的来源。
  • target_url:目标网站。

5. 使用方法

  1. 请求框架地址 下载框架到本地,修改 work_spider.pydelete_not_update_ip.pyget_proxies_base_spider.pysys.append(...) 的地址为本地框架路径,路径尽量不带中文。
  2. 执行 pip install -r requirements.txt 安装依赖库。
  3. proxy_basic_config.py 中配置代理 IP 网站,若只想试运行,可使用已有配置项。
  4. config.py 中配置请求框架,试运行时可使用现有配置。
  5. 确保正确安装 MongoDB 数据库。
  6. 若网站特殊,自定义解析函数并在第一步中正确配置。
  7. 执行 work_spider.py 脚本开始抓取、检测和入库。
  8. 执行 proxy_api.py 脚本开启 API 服务。
  9. 执行 delete_not_update_ip.py 脚本对超过存活时间阀值的 IP 进行重新检测、删除或更新插入时间。

6. 工作流程

  1. 定时获取 IP。
  2. 根据目标网站分别对 IP 进行检测。
  3. 检测成功的 IP 入库。
  4. 构建 API 服务。
  5. 对入库的 IP 再次检测,删除不可用的 IP。

7. 具体脚本介绍

获取 IP 及检测 IP 并入库相关脚本

  • work_spider.py:入口脚本,从 get_proxies_base_spider.py 继承 SpiderMain 类,重写 run 方法,可传入自定义请求函数。
  • get_proxies_base_spider.py:主程序,提供默认的 IP 获取、检测和入库函数,解析函数可自定义。包含 runcrawget_and_checkparse_to_get_ipstart_checksave_ip 等方法。
  • _request.py:检测脚本程序,包含 valid 方法,用于检测 IP 是否可用,需返回响应时间与检测的 IP。
  • proxy_basic_config.py:代理网页设置脚本,包含 target_urlscollection_nameover_timeurl_parse_dict 等字段,用于配置代理 IP 网站。
  • custom_get_ip 文件夹下的脚本:用于自定义解析函数,以 get_ip_from_peauland.py 为例,需定义解析函数并在 proxy_basic_config.py 中配置。

API 相关脚本

  • db_method.py:封装数据库方法,包括 get_oneget_alldelete_onetotal 等。
  • proxy_api.py:接口服务主脚本,默认启动 22555 端口,提供 //count//get_one//get_all//delete/ 等 API 接口。

8. 项目许可

该项目采用 Apache License 2.0 许可。

github

文档