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

Scylla——开源免费的优秀代理 IP 池:自动验证、JSON API、基于 React 的 Web UI、Docker 支持

  •  9
     
  •   WildCat · 268 天前 · 6076 次点击
    这是一个创建于 268 天前的主题,其中的信息可能已经有所发展或是发生改变。

    banner

    Build Status codecov Documentation Status PyPI version Docker Build Status

    GitHub:https://github.com/imWildCat/scylla

    中文文档:https://scylla.wildcat.io/zh/latest/

    自己是一个爬虫爱好者,有时候爬虫写的太过强大了被目标网站封了(笑)。所以就萌生了用代理 IP 的想法。很可惜很多开源代理 IP 池都是没有持续维护的,代码也比较奇怪。于是自己就写了一个。特性大概有:

    • 自动化的代理 IP 爬取与验证
    • 易用的 JSON API
    • 简单但美观的 web 用户界面,基于 TypeScript 和 React (例如,代理的地理分布)
    • 最少仅用 一条命令 即可启动
    • 无头浏览器( headless browser crawling )爬虫

    欢迎在贴中留下您的邮箱,我可以发送你 demo 地址(暂时不打算公开发布)。如果您想留邮箱,请注意:

    • 可以使用 base64 编码
    • 在您的回复的第一行或者最后一行写
    • 也可以用 [at] 替代 @

    附:几个截图 demo

    截图 1: Web UI (代理 IP 列表)

    1

    截图 2: Web UI (代理 IP 的地理分布)

    2

    第 1 条附言  ·  268 天前

    因为是用爬虫脚本自动爬 emails,所以:

    **Email 地址请单独一行写,谢谢!**千万不要在 base64 后面加任何字符,这样会被我的智障脚本忽略。

    另外,关于一些 features (#49):

    IP 验证策略

    @golmic 关于 IP 验证策略:目前的策略有点过于简单,由于这个项目已经写了一个月了,决定先发出来(骗一波 stars )让自己更有动力去写 =。= 我会在近期完善验证策略,并且把验证策略的文档完善: https://github.com/imWildCat/scylla/issues/16

    Forward proxy

    @binux 原来这个名词叫 forward proxy,感谢!我其实一开始是有这样的想法的,但是有一些担心所以没在初版实现:

    • 担心自己实现的 forward proxy 性能不足比较鸡肋
    • 担心 XX 找到 G 点说我 XXX (你懂)
    • 实现比较 rough 可能没什么用
    • 还有就是如何给 clients 分配代理也是一个问题。一开始可以考虑随机分配,但是我理想的情况是:
    • a. clients 的 HTTP Request 带一个类似 hash 的 header,固定 hash 对应固定代理
    • b. Scylla 里自动分析请求的 HTTP Header,比如针对 Cookies 中的 session 做一次 hashing。如果判定是同一个 session 的请求,就用同一个 IP。难点在于如何判断 session id。

    我考虑先加入随机分配代理的 forward proxy: https://github.com/imWildCat/scylla/issues/17

    根据国家返回 proxy

    @zqjilove 收到需求,下一个小版本就加入: https://github.com/imWildCat/scylla/issues/18

    第 2 条附言  ·  267 天前

    在 27, May, 2018 @ 16.50 (UTC) 时,这个项目登上了 GitHub trending 第五,感谢大家! Screenshot-2018-5-27 Build software better, together copy-crunch.png

    92 回复  |  直到 2018-07-22 20:05:44 +08:00
        1
    Baboonowen   268 天前 via Android
    打破惨案
        2
    flyxl   268 天前 via Android
    赞楼主,求 demo
        3
    0312birdzhang   268 天前 via iPhone
    先赞一个
        4
    artandlol   268 天前 via iPhone
    YXJ0YW5kbG9sI2dtYWlsLmNvbQ==
        5
    golmic   268 天前 via Android   ♥ 1
    i [at] lujq.me

    想知道 IP 的验证策略。因为我觉得 IP 代理池的核心就是这个。只有策略出色才能突出
        6
    binux   268 天前   ♥ 1
    我一直觉得最好用的代理 IP 池接口就是 forward proxy。
    forward proxy 对应用透明地自动 rotate,抓取的同时天然地自动验证。
        7
    B1ock   268 天前
    bWFza3NzQHByb3Rvbm1haWwuY29t
    感谢
        8
    o00o   268 天前
    IHJvbW90Y0BnbWFpbC5jb20g
    谢谢
        9
    panyanyany   268 天前
    NTY4Mzk3NDQwQHFxLmNvbQ==

    请问楼主这些 ip 是从哪里来的呢,全网扫描还是?
        10
    panyanyany   268 天前
    @panyanyany #9 不好意思,原来还有个 providers 文件夹,现在知道是扫公开的代理了
        11
    ThirdFlame   268 天前
    ZmFuZGVsYWppQGdtYWlsLmNvbQ==
        12
    airyland   268 天前
    赞,docker 无痛安装成功
        13
    zqjilove   268 天前
    API 接口支持国家输出就好了
        14
    131   268 天前 via Android
    YmxvZ0Btb2UuaW0=

    谢谢!
        15
    cyn   268 天前
    Y3lubGl0dGxlW2F0XTEyNi5jb20=
    支持,感谢!
        16
    dex2jar   268 天前 via Android
    ODA3NjYwMDcxQHFxLmNvbQ==
    谢谢楼主。看起来挺好的,前段时间刚买了 5 块的 ip
        17
    gclm   268 天前 via Android
    gclm159[at]gmail.com
    支持,感谢
        18
    Sixzeroo   268 天前
    c2l4emVyb282MEBnbWFpbC5jb20=
    感谢楼主
        19
    airyland   268 天前
    报个问题,开始接口报 500,过一会正常,运行一段时间后 stats 500,proxy 列表为空。
        20
    ccbikai   268 天前 via iPhone
    chi#miantiao.me 谢谢楼主,自己也在爬各个代理网站的 IP,支持 https 的很少
        21
    faceair   268 天前 via iPhone
    v2ex#faceair.me 感谢楼主
        22
    noqwerty   268 天前 via Android
    emhvdS56eS55aUBnbWFpbC5jb20=
    谢谢楼主。
        23
    shenlw66   268 天前
    c2hlbmx3NjZAZ21haWwuY29t
    感谢
        24
    tcpdump   268 天前 via Android
    回复标记一下
        25
    caoyufei   268 天前
    YXRjYW95dWZlaUBnbWFpbC5jb20=
    感谢
        26
    cocang   268 天前
    Y2hvdWNoYW5nemh1QGdtYWlsLmNvbQ==
    谢谢楼主
        27
    JakeZou   268 天前
    em91bHV4QDEyNi5jb20=
        28
    weegc   268 天前
    d2VlZ2NAMTYzLmNvbQ==

    谢谢楼主
        29
    yfgeek   268 天前 via iPhone   ♥ 1
    非常棒!正好有这个需求,粉了!
        30
    congeec   268 天前 via iPhone
    Q29uZ2VlY0BxcS5jb20=
    好人一生平安
    不过代理池怎么还有爬虫功能呢?
        31
    chroming   268 天前
    跟这个比有什么优势吗? https://github.com/SpiderClub/haipproxy
        32
    ywind   268 天前 via Android
    Z3Vvc2h1a2FuZ0Bob3RtYWlsLmNvbQ==
    感谢
        33
    Akagi201   268 天前
    YWthZ2kyMDFAZ21haWwuY29tCg==
        34
    gitopen   268 天前 via Android
    Z2l0b3BlbkBnbWFpbC5jb20=
        35
    alphabity   268 天前
    YWxwaGFiaXR5QGdtYWlsLmNvbQ==
        36
    lje024   268 天前
    c3JnYjY4OUBsamVlZHUubWw=
    感谢
        37
    yodeser   268 天前
    eW9kZXNAeW9kZXMuY24=
    感谢感谢
        38
    limitsy   268 天前
    bGltaXRzeTIxN0BnbWFpbC5jb20=
    感谢
        39
    trimleo   268 天前
    bGVvY2xvdWR5QGdtYWlsLmNvbQ==
    感谢
        40
    aiguozhedaodan   268 天前
    YWlndW96aGVkYW9kYW5AZ21haWwuY29t
    感谢
        41
    cnyang   268 天前
    aGFoYUBvZmZpY2UyMDE2LnNpdGU=
    不胜感激
        42
    hlwjia   268 天前
    aGx3amlhQGZveG1haWwuY29t

    谢谢
        43
    IllBeBack   268 天前
    谢谢
    enByZWdpc3RlckBnbWFpbC5jb20=
        44
    yazoox   268 天前 via Android
    eWF6b294QHNpbmEuY29t

    谢谢!
        45
    JasonYo   268 天前
    Mjc3MTc5MjMwMUBxcS5jb20=

    给力!大兄弟,多谢
        46
    j0hnj   268 天前
    bmlnZWxjaGlhbmdAb3V0bG9vay5jb20=

    代码不错~
        47
    byron   268 天前
    Ynlyb25qaWFAZ21haWwuY29t

    吼啊。
        48
    chenggiant   268 天前
    Y2hlbmdjaGlidEBnbWFpbC5jb20=

    赞!
        49
    echopan   268 天前
    ZWNob3BhbjEyMzRAaG90bWFpbC5jb20= 谢谢
        50
    WildCat   268 天前   ♥ 1
    @golmic
    关于 IP 验证策略:目前的策略有点过于简单,由于这个项目已经写了一个月了,决定先发出来(骗一波 stars )让自己更有动力去写 =。=
    我会在近期完善验证策略,并且把验证策略的文档完善: https://github.com/imWildCat/scylla/issues/16

    @binux 原来这个名词叫 forward proxy,感谢!我其实一开始是有这样的想法的,但是有一些担心所以没在初版实现:
    - 担心自己实现的 forward proxy 性能不足比较鸡肋
    - 担心 XX 找到 G 点说我 XXX (你懂)
    - 实现比较 rough 可能没什么用
    - 还有就是如何给 clients 分配代理也是一个问题。一开始可以考虑随机分配,但是我理想的情况是:
    - a. clients 的 HTTP Request 带一个类似 hash 的 header,固定 hash 对应固定代理
    - b. Scylla 里自动分析请求的 HTTP Header,比如针对 Cookies 中的 session 做一次 hashing。如果判定是同一个 session 的请求,就用同一个 IP。难点在于如何判断 session id。

    我考虑先加入随机分配代理的 forward proxy: https://github.com/imWildCat/scylla/issues/17



    @airyland 请发下 logs,非常感谢!



    @zqjilove 收到需求,下一个小版本就加入: https://github.com/imWildCat/scylla/issues/18
        51
    momocraft   268 天前
    bWVAam9rZXN0ZXIuaW8=

    感谢 (应该不会用很多)
        52
    bbbb   268 天前 via iPhone
    aGVsbG9oZnlAZ21haWwuY29t
        53
    SingeeKing   268 天前
    aW1zaW5nZWVAZ21haWwuY29t
        54
    WildCat   268 天前
    > @chroming 提问: 跟这个比有什么优势吗? https://github.com/SpiderClub/haipproxy

    既然你诚心诚意的发问了,那我就王婆卖瓜下啦( 233 ):
    对比 https://github.com/SpiderClub/haipproxy,这个项目的想法如下:
    1. 更简单的依赖,不需要 scrapy-splash 或者 redis。
    2. 更优秀的文档,包括代码文档(虽然目前不是很完善)。
    3. 我写了一些测试,尽力保证项目的可用性、维护性。
    4. 完善的 Community profile ( https://github.com/imWildCat/scylla/community ),对比: https://github.com/SpiderClub/haipproxy/community。即使我以后不维护这个项目了,也希望尽可能方便大家参( jie )与( pan )
    5. README 和文档里使用“盘古之白”(中文和西文字符标点之间注意加了合适的空格,适合强迫症患者阅读),参见: https://github.com/vinta/pangu.js/blob/master/README.md
    6. 一个 `scylla` 命令或者其他 docker 命令即可启动,没那么多幺蛾子命令: https://github.com/SpiderClub/haipproxy#%E6%9C%8D%E5%8A%A1%E7%AB%AF
        55
    fy   268 天前
    资瓷一下。

    ZnkwQHFxLmNvbQ==
        56
    avichen   268 天前
    YXZpY2hlbkAxMjYuY29t

    谢谢
        57
    armysheng   267 天前
    YXJteXNoZW5nQGdtYWlsLmNvbQ==
        58
    mikezy123   267 天前 via iPhone
    am95emVuZzU1NUBnbWFpbC5jb20=

    感谢
        59
    breaklayer   267 天前
    YnJlYWtsYXllckAxNjMuY29t

    感谢
        60
    davidf   267 天前
    c3psZGZAb3V0bG9vay5jb20=

    谢谢
        61
    Cipool   267 天前 via Android
    YTIyMTMxMDhAeWFob28uY29t
    麻烦了
        62
    l9rw   267 天前
    aUBsOXJ3LmNu

    感谢老哥
        63
    chroming   267 天前   ♥ 1
    @WildCat #54 感谢回复。文档确实十分完善,代码也很清晰。

    提一个小建议,Windows 无法直接安装 sanic,需手动设置 `SANIC_NO_UVLOOP=true` `SANIC_NO_UJSON=true` 两个环境变量才可安装。后期是否会考虑使用其他兼容 Windows 的后端模块来替换 sanic
        64
    skwfar   267 天前
    c2t3ZmFyQGdtYWlsLmNvbQ==
    十分感谢
        65
    WildCat   267 天前
    @chroming 由于目前还有太多工作需要做,暂时不考虑替换 Sanic。Win 上应该可以用 Linux 子系统解决这个问题
        66
    Lentin   267 天前
    bGVudGluQG91dGxvb2suY29t
        67
    okface   267 天前 via Android
    zgp6300[at]dingtalk.com
        68
    Seth8277   267 天前 via Android
    bWFpbEBpbXNldGguY24=
    谢谢
        69
    WhyLiam   267 天前
    bGlhbXpodWNlQGdtYWlsLmNvbQ==
        70
    leeger   267 天前
    emx2aXJtYWNoMUBnbWFpbC5jb20=

    谢谢~~~~
        71
    yazoox   267 天前
    不好意思,楼主。不是很懂这个搜索出来的 proxy 怎么使用?
    我在你的 github 里面提了一个问题, 有空可以去看看。
    简单说,就是我用 SwitchyOmega,设置了一个 Scylla 搜索出来的 IP:PORT 地址,但是,貌似没啥用啊?连网络都不通......
        72
    suxing   267 天前
    MTQzMjg0NTE4M0BxcS5jb20=
        73
    saymoon   267 天前
    c2F5bW9vbkBnbWFpbC5jb20=
    感谢
        74
    ftxg   267 天前
    anVob25neGlhb3Nob3VAMTYzLmNvbQ==
        75
    gonglexin   267 天前
    Z29uZ2xleGluQGdtYWlsLmNvbQ==\n
        76
    twMM   267 天前
    dGFuZ3RhbzM2NkAxNjMuY29t
    谢谢楼主
        77
    lanxyou   267 天前
    感谢

    bGFueHlvdUBnbWFpbC5jb20=
        78
    keventseng   266 天前
    Y2F0emlAdmlwLnFxLmNvbQ==
        79
    iOran   266 天前
    aW9zdGlueUB5YWhvby5jb20NCg==
        80
    ARhen   266 天前
    bDEwMTA5MDgzMjZAZ21haWwuY29t
    谢谢楼主~
        81
    undertonememorie   266 天前
    aUBqb2tlci5vcmcuY24=
    谢谢楼主
        82
    ye3245   266 天前
    eWUzMjQ1QHNpbmEuY29t
    感谢
        83
    Mervyn   265 天前
    bGlmZWlmZWljaG5AMTYzLmNvbQ==
    谢谢楼主。
        84
    rik7821   264 天前
    cmlrNzgyMUAxNjMuY29t
    谢谢楼主
        85
    MikeFeng   263 天前
    cWlubGFuZmVuZ0Bmb3htYWlsLmNvbQ==
    感谢
        86
    caoyufei   263 天前
    ipinfo
    Rate limit exceeded. Subscribe to a paid plan to increase your usage limits at http://ipinfo.io/pricing, or contact us via http://ipinfo.io/contact
        87
    oddcc   257 天前
    c2t5Y2M3MTY0MEBnbWFpbC5jb20=

    谢谢!
        88
    qcloud   251 天前
    搭建之后,没有 IP 耶............
        89
    qcloud   251 天前
    OTM1MjI3Nzk5QHFxLmNvbQ==

    3Q
        90
    demoxu   250 天前
    @WildCat 能不能再 8081 代理制返回 https 的代理,或者指定延迟以下的
        91
    skyzan   238 天前 via Android
    MTc4MTU2NDE5NkBxcS5jb20=
    感谢
        92
    a861123145   212 天前
    YTg2MTEyMzE0NUBnbWFpbC5jb20K

    感谢
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2349 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 12:26 · PVG 20:26 · LAX 04:26 · JFK 07:26
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1