V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xtpitt
V2EX  ›  Python

爬虫绕不开代理,免费的可用率低,付费的过期时间往往又不确定。如何校验也是问题。造了个轮子,欢迎拍砖~

  •  
  •   xtpitt · 2019-12-16 00:41:28 +08:00 · 4952 次点击
    这是一个创建于 1808 天前的主题,其中的信息可能已经有所发展或是发生改变。

    proxy_tower

    代理负载均衡模块,更高效率的使用代理池

    注:proxy_tower 本身不抓取、嗅探代理

    特性

    • 多倍转发
      • 支持将收到的代理请求转发给多个 proxy
      • 返回最快并且有效的 response

    多倍转发可有效解决免费 /不稳定代理使用率低的问题

    • response 校验
      • pattern 是目标站点的某个复用页面,通常有同样的 URL 前缀,类似的 HTML 结构,如豆瓣电影movie.douban.com/subject/
      • 通过前缀树存储 pattern 和对应的 xpath 或 keyword 校验规则,高效、简便的解决了多站点校验的问题
      • 不同的 pattern 有其各自的代理池

    地址: https://github.com/worldwonderer/proxy_tower

    第 1 条附言  ·  2019-12-16 13:39:25 +08:00
    回答下大家的疑问吧

    其实实际使用中,往多个免费代理转发成功率是大大提高的,免费代理最大的缺点是不稳定,谁也没法保证一个免费代理下一秒还能不能用,被封反而是次要的。(最多可能就会影响其他正常使用免费代理的人

    另外 response 校验就是通过计分,不让一个代理一直访问,某个代理一直失败的话会加入冷却池。轮换多个代理还是失败的话,那很可能是其它问题,这个时候就会 alert。
    11 条回复    2019-12-16 22:35:41 +08:00
    locoz
        1
    locoz  
       2019-12-16 01:07:04 +08:00 via Android   ❤️ 1
    看了一下,大概猜到你是弄这东西是为了干啥了…不建议用这么简单粗暴的方式硬怼,量大的话很容易把 IP 池给污染掉,用一段时间后会发现成功概率越来越低。

    “付费代理过期时间不确定”这个有点迷,如果说是要保持使用同一个 IP 的话,跟同时转发给多个代理这个操作又是有冲突的。而且现在做得比较大的那几家代理 IP 商貌似都没有过期时间不确定这个情况?
    locoz
        2
    locoz  
       2019-12-16 01:09:13 +08:00 via Android   ❤️ 1
    🤣然后现在国内有专门的爬虫社区了,我们夜幕团队弄的,楼主你可以去那边也发一下 hhhh,地址是: https://bbs.nightteam.cn
    xtpitt
        3
    xtpitt  
    OP
       2019-12-16 01:16:29 +08:00
    @locoz 看过大佬的社区,明天去转发一下
    1. 多倍转发特性主要是针对免费代理的,目的是快速过滤掉一些广告代理和低质代理,方式确实有点类似的多倍发包,哈哈哈。 付费代理的话,我之前用过的某麻代理等,都说明 15 分钟有效,但测试下来,过期时间确实不稳定。
    2. 主要想推广 response 校验的特性,在别的代理项目中,暂时还没发现实现这个功能的~
    locoz
        4
    locoz  
       2019-12-16 01:36:42 +08:00   ❤️ 1
    @xtpitt #3 这样啊。我明天帮你喷一喷某麻的人

    response 校验的话就是我前面说的,方便是方便但是容易把 IP 池污染掉。毕竟现在很多反爬虽然识别 IP 但并不是以 IP 作为核心判断点的(因为商业级代理 IP 全是拨号 IP...容易误伤),如果出现被反爬的情况很大概率是因为别的问题,而这种情况下如果还继续暴力请求的话就很容易被直接封 IP 了。

    这种偏无感知的 response 校验操作挺好的,适合往一些框架里集成(指对反爬系统返回的东西进行通用化的校验)。
    392039757
        5
    392039757  
       2019-12-16 08:15:27 +08:00   ❤️ 1
    @xtpitt 免费代理现在都玩不进了,免费代理的网站总是失效,我们直接撸收费代理扔到代理池,设定失效时间
    xtpitt
        6
    xtpitt  
    OP
       2019-12-16 10:03:07 +08:00 via Android
    @392039757 中小型项目还是可以玩玩的,毕竟还有很多公司不舍得买代理。开着校验和多倍转发,我在个人项目用着成功率很高。
    lc7029
        7
    lc7029  
       2019-12-16 11:27:13 +08:00   ❤️ 1
    扫描 IP,能用就加到代理列表里
    以前闲的蛋疼把 0.0.0.0-255.255.255.255 全扫了,顶多 43 亿地址
    xtpitt
        8
    xtpitt  
    OP
       2019-12-16 13:05:00 +08:00 via Android
    @lc7029 算上端口,数量还是挺多的。虽然代理的端口一般都用那几个。
    xtpitt
        9
    xtpitt  
    OP
       2019-12-16 13:41:22 +08:00 via Android
    @locoz 刚刚附言中回答了下你所说的问题,是有做策略的
    locoz
        10
    locoz  
       2019-12-16 15:22:45 +08:00
    @lc7029 #7 效率太低了,还有一种更高效的办法:直接用 zoomeye 之类的网络空间搜索引擎搜代理服务器相关关键词。
    lc7029
        11
    lc7029  
       2019-12-16 22:35:41 +08:00
    @locoz 效率低归低,越简单的方法越有效不是?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3785 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 10:38 · PVG 18:38 · LAX 02:38 · JFK 05:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.