V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
endoffight
V2EX  ›  分享创造

分享一个最近写的 http 代理池工具 proxy_pool

  •  
  •   endoffight ·
    phpgao · 2019-12-01 14:37:58 +08:00 · 4536 次点击
    这是一个创建于 1817 天前的主题,其中的信息可能已经有所发展或是发生改变。

    proxy_pool

    之前用过很多开源出来的工具,效果都不是很理想,于是就自己开发了这个工具。他功能很简单,抓代理并且提供 api 给爬虫或者其他需要 http 代理的软件用。

    支持功能

    • 定时抓取互联网公开免费的代理
    • 定时验证可用代理
    • 支持动态代理( https 仅支持 connect)
    • 使用采集到的代理访问代理网站
    • 使用命令行环境变量进行配置

    说明

    • 采集的网站可以在 source 文件夹下找到
    • 支持了传统的 api 模式和动态代理,用过阿布云的同学一定知道
    • 有些网站可能当前网络也上不去,所以添加了用采集到的代理去访问目标页面的功能
    • 想要添加自己的 spider,最简单的只要 50 行代码即可

    下载地址

    如果用的顺手,欢迎 star 一下~

    proxy_pool/releases

    5 条回复    2019-12-03 14:51:50 +08:00
    mythjava
        1
    mythjava  
       2019-12-02 16:10:03 +08:00
    好东西
    xjoker
        2
    xjoker  
       2019-12-03 09:52:32 +08:00
    好像没看见配置检测网址的功能
    endoffight
        3
    endoffight  
    OP
       2019-12-03 11:52:57 +08:00 via Android
    @xjoker 目前用的是 ip.cip.cc ,这个 url 直接返回客户端 ip,方便比较

    是有需求吗?
    xjoker
        4
    xjoker  
       2019-12-03 12:59:26 +08:00
    @endoffight #3 刚好最近在做爬虫类的项目
    你这个项目真的很不错

    有时候会遇到反爬或者 ip 被封禁,所以我这里都是使用一个自定义的地址来检测代理的可用性
    endoffight
        5
    endoffight  
    OP
       2019-12-03 14:51:50 +08:00
    @xjoker

    这个问题其实之前考虑过,因为池子可能不是给某一个爬虫使用,所以当时考虑到创建多个池子,然后针对每一个池配置一个检测代理是否可用的规则,所以我在开发的时候预留了 master 和 worker 模式,master 负责爬,每个 work 会维护自己的池子,m 会把采集到的代理分发到所有 w 中。

    但是检测一个代理 IP 是否可用,仅仅靠 http code==200 应该是不够的,遇到 API 类型的 url,可能要解析一下,然后判断某个字段是否正确;或者 html 中出现了某个关键字;还可能有更复杂的判断模式,当时想很多东西,撸代码的时候觉得还是先把基本功能实现了再说。

    综上,目前这个项目还是属于初级阶段,代理池时作为一个中立的池子。而你说的这个 feature 等有了 M/W 模式后就很好实现了。现阶段想满足你的需求修改 proxy 的 TestProxy 方法为你自己的逻辑即可。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5600 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 02:41 · PVG 10:41 · LAX 18:41 · JFK 21:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.