这个仓库 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. 使用方法
- 从 请求框架地址 下载框架到本地,修改
work_spider.py
、delete_not_update_ip.py
、get_proxies_base_spider.py
中sys.append(...)
的地址为本地框架路径,路径尽量不带中文。 - 执行
pip install -r requirements.txt
安装依赖库。 - 在
proxy_basic_config.py
中配置代理 IP 网站,若只想试运行,可使用已有配置项。 - 在
config.py
中配置请求框架,试运行时可使用现有配置。 - 确保正确安装 MongoDB 数据库。
- 若网站特殊,自定义解析函数并在第一步中正确配置。
- 执行
work_spider.py
脚本开始抓取、检测和入库。 - 执行
proxy_api.py
脚本开启 API 服务。 - 执行
delete_not_update_ip.py
脚本对超过存活时间阀值的 IP 进行重新检测、删除或更新插入时间。
6. 工作流程
- 定时获取 IP。
- 根据目标网站分别对 IP 进行检测。
- 检测成功的 IP 入库。
- 构建 API 服务。
- 对入库的 IP 再次检测,删除不可用的 IP。
7. 具体脚本介绍
获取 IP 及检测 IP 并入库相关脚本
work_spider.py
:入口脚本,从get_proxies_base_spider.py
继承SpiderMain
类,重写run
方法,可传入自定义请求函数。get_proxies_base_spider.py
:主程序,提供默认的 IP 获取、检测和入库函数,解析函数可自定义。包含run
、craw
、get_and_check
、parse_to_get_ip
、start_check
、save_ip
等方法。_request.py
:检测脚本程序,包含valid
方法,用于检测 IP 是否可用,需返回响应时间与检测的 IP。proxy_basic_config.py
:代理网页设置脚本,包含target_urls
、collection_name
、over_time
、url_parse_dict
等字段,用于配置代理 IP 网站。custom_get_ip
文件夹下的脚本:用于自定义解析函数,以get_ip_from_peauland.py
为例,需定义解析函数并在proxy_basic_config.py
中配置。
API 相关脚本
db_method.py
:封装数据库方法,包括get_one
、get_all
、delete_one
、total
等。proxy_api.py
:接口服务主脚本,默认启动 22555 端口,提供/
、/count/
、/get_one/
、/get_all/
、/delete/
等 API 接口。
8. 项目许可
该项目采用 Apache License 2.0 许可。