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

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

  •  9
     
  •   WildCat · 2018-05-27 07:05:54 +08:00 · 8148 次点击
    这是一个创建于 539 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 条附言  ·  2018-05-27 18:39:46 +08:00

    因为是用爬虫脚本自动爬 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 条附言  ·  2018-05-28 00:51:56 +08:00

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

    93 回复  |  直到 2019-06-13 15:51:01 +08:00
        1
    Baboonowen   2018-05-27 08:02:00 +08:00 via Android
    打破惨案
        2
    flyxl   2018-05-27 08:02:28 +08:00 via Android
    赞楼主,求 demo
        3
    0312birdzhang   2018-05-27 08:06:43 +08:00 via iPhone
    先赞一个
        4
    artandlol   2018-05-27 08:18:05 +08:00 via iPhone
    YXJ0YW5kbG9sI2dtYWlsLmNvbQ==
        5
    golmic   2018-05-27 08:30:47 +08:00 via Android   ♥ 1
    i [at] lujq.me

    想知道 IP 的验证策略。因为我觉得 IP 代理池的核心就是这个。只有策略出色才能突出
        6
    binux   2018-05-27 08:30:57 +08:00   ♥ 1
    我一直觉得最好用的代理 IP 池接口就是 forward proxy。
    forward proxy 对应用透明地自动 rotate,抓取的同时天然地自动验证。
        7
    B1ock   2018-05-27 08:58:07 +08:00
    bWFza3NzQHByb3Rvbm1haWwuY29t
    感谢
        8
    o00o   2018-05-27 09:06:43 +08:00
    IHJvbW90Y0BnbWFpbC5jb20g
    谢谢
        9
    panyanyany   2018-05-27 09:26:03 +08:00
    NTY4Mzk3NDQwQHFxLmNvbQ==

    请问楼主这些 ip 是从哪里来的呢,全网扫描还是?
        10
    panyanyany   2018-05-27 09:27:35 +08:00
    @panyanyany #9 不好意思,原来还有个 providers 文件夹,现在知道是扫公开的代理了
        11
    ThirdFlame   2018-05-27 09:34:56 +08:00
    ZmFuZGVsYWppQGdtYWlsLmNvbQ==
        12
    airyland   2018-05-27 09:38:46 +08:00
    赞,docker 无痛安装成功
        13
    zqjilove   2018-05-27 09:40:32 +08:00
    API 接口支持国家输出就好了
        14
    131   2018-05-27 09:44:20 +08:00 via Android
    YmxvZ0Btb2UuaW0=

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

    谢谢楼主
        29
    yfgeek   2018-05-27 12:03:06 +08:00 via iPhone   ♥ 1
    非常棒!正好有这个需求,粉了!
        30
    congeec   2018-05-27 12:32:31 +08:00 via iPhone
    Q29uZ2VlY0BxcS5jb20=
    好人一生平安
    不过代理池怎么还有爬虫功能呢?
        31
    chroming   2018-05-27 12:32:53 +08:00
    跟这个比有什么优势吗? https://github.com/SpiderClub/haipproxy
        32
    ywind   2018-05-27 12:52:28 +08:00 via Android
    Z3Vvc2h1a2FuZ0Bob3RtYWlsLmNvbQ==
    感谢
        33
    Akagi201   2018-05-27 14:10:25 +08:00
    YWthZ2kyMDFAZ21haWwuY29tCg==
        34
    gitopen   2018-05-27 14:53:34 +08:00 via Android
    Z2l0b3BlbkBnbWFpbC5jb20=
        35
    alphabity   2018-05-27 15:13:11 +08:00
    YWxwaGFiaXR5QGdtYWlsLmNvbQ==
        36
    lje024   2018-05-27 15:35:27 +08:00
    c3JnYjY4OUBsamVlZHUubWw=
    感谢
        37
    yodeser   2018-05-27 15:46:23 +08:00
    eW9kZXNAeW9kZXMuY24=
    感谢感谢
        38
    limitsy   2018-05-27 16:17:22 +08:00
    bGltaXRzeTIxN0BnbWFpbC5jb20=
    感谢
        39
    trimleo   2018-05-27 16:31:02 +08:00
    bGVvY2xvdWR5QGdtYWlsLmNvbQ==
    感谢
        40
    aiguozhedaodan   2018-05-27 16:35:23 +08:00
    YWlndW96aGVkYW9kYW5AZ21haWwuY29t
    感谢
        41
    cnyang   2018-05-27 16:55:05 +08:00
    aGFoYUBvZmZpY2UyMDE2LnNpdGU=
    不胜感激
        42
    hlwjia   2018-05-27 16:56:12 +08:00
    aGx3amlhQGZveG1haWwuY29t

    谢谢
        43
    IllBeBack   2018-05-27 16:58:43 +08:00
    谢谢
    enByZWdpc3RlckBnbWFpbC5jb20=
        44
    yazoox   2018-05-27 17:09:36 +08:00 via Android
    eWF6b294QHNpbmEuY29t

    谢谢!
        45
    JasonYo   2018-05-27 17:22:07 +08:00
    Mjc3MTc5MjMwMUBxcS5jb20=

    给力!大兄弟,多谢
        46
    j0hnj   2018-05-27 17:52:19 +08:00
    bmlnZWxjaGlhbmdAb3V0bG9vay5jb20=

    代码不错~
        47
    byron   2018-05-27 18:05:34 +08:00
    Ynlyb25qaWFAZ21haWwuY29t

    吼啊。
        48
    chenggiant   2018-05-27 18:10:05 +08:00
    Y2hlbmdjaGlidEBnbWFpbC5jb20=

    赞!
        49
    echopan   2018-05-27 18:10:13 +08:00
    ZWNob3BhbjEyMzRAaG90bWFpbC5jb20= 谢谢
        50
    WildCat   2018-05-27 18:37:10 +08:00   ♥ 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   2018-05-27 18:42:05 +08:00
    bWVAam9rZXN0ZXIuaW8=

    感谢 (应该不会用很多)
        52
    bbbb   2018-05-27 18:55:35 +08:00 via iPhone
    aGVsbG9oZnlAZ21haWwuY29t
        53
    SingeeKing   2018-05-27 18:56:21 +08:00
    aW1zaW5nZWVAZ21haWwuY29t
        54
    WildCat   2018-05-27 19:08:56 +08:00
    > @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   2018-05-27 19:18:55 +08:00
    资瓷一下。

    ZnkwQHFxLmNvbQ==
        56
    avichen   2018-05-27 19:29:01 +08:00
    YXZpY2hlbkAxMjYuY29t

    谢谢
        57
    armysheng   2018-05-27 21:17:19 +08:00
    YXJteXNoZW5nQGdtYWlsLmNvbQ==
        58
    mikezy123   2018-05-27 22:01:56 +08:00 via iPhone
    am95emVuZzU1NUBnbWFpbC5jb20=

    感谢
        59
    breaklayer   2018-05-27 22:08:41 +08:00
    YnJlYWtsYXllckAxNjMuY29t

    感谢
        60
    davidf   2018-05-27 22:17:11 +08:00
    c3psZGZAb3V0bG9vay5jb20=

    谢谢
        61
    Cipool   2018-05-27 22:22:08 +08:00 via Android
    YTIyMTMxMDhAeWFob28uY29t
    麻烦了
        62
    l9rw   2018-05-27 22:37:04 +08:00
    aUBsOXJ3LmNu

    感谢老哥
        63
    chroming   2018-05-27 22:40:42 +08:00   ♥ 1
    @WildCat #54 感谢回复。文档确实十分完善,代码也很清晰。

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

    谢谢~~~~
        71
    yazoox   2018-05-28 09:56:44 +08:00
    不好意思,楼主。不是很懂这个搜索出来的 proxy 怎么使用?
    我在你的 github 里面提了一个问题, 有空可以去看看。
    简单说,就是我用 SwitchyOmega,设置了一个 Scylla 搜索出来的 IP:PORT 地址,但是,貌似没啥用啊?连网络都不通......
        72
    suxing   2018-05-28 11:33:43 +08:00
    MTQzMjg0NTE4M0BxcS5jb20=
        73
    saymoon   2018-05-28 12:26:55 +08:00
    c2F5bW9vbkBnbWFpbC5jb20=
    感谢
        74
    ftxg   2018-05-28 12:44:11 +08:00
    anVob25neGlhb3Nob3VAMTYzLmNvbQ==
        75
    gonglexin   2018-05-28 15:34:03 +08:00
    Z29uZ2xleGluQGdtYWlsLmNvbQ==\n
        76
    twMM   2018-05-28 16:28:56 +08:00
    dGFuZ3RhbzM2NkAxNjMuY29t
    谢谢楼主
        77
    lanxyou   2018-05-28 17:05:55 +08:00
    感谢

    bGFueHlvdUBnbWFpbC5jb20=
        78
    keventseng   2018-05-29 11:25:33 +08:00
    Y2F0emlAdmlwLnFxLmNvbQ==
        79
    iOran   2018-05-29 13:08:39 +08:00
    aW9zdGlueUB5YWhvby5jb20NCg==
        80
    ARhen   2018-05-29 14:14:52 +08:00
    bDEwMTA5MDgzMjZAZ21haWwuY29t
    谢谢楼主~
        81
    undertonememorie   2018-05-29 15:14:40 +08:00
    aUBqb2tlci5vcmcuY24=
    谢谢楼主
        82
    ye3245   2018-05-29 18:27:28 +08:00
    eWUzMjQ1QHNpbmEuY29t
    感谢
        83
    Mervyn   2018-05-30 18:06:42 +08:00
    bGlmZWlmZWljaG5AMTYzLmNvbQ==
    谢谢楼主。
        84
    rik7821   2018-05-31 11:15:24 +08:00
    cmlrNzgyMUAxNjMuY29t
    谢谢楼主
        85
    MikeFeng   2018-06-01 13:59:46 +08:00
    cWlubGFuZmVuZ0Bmb3htYWlsLmNvbQ==
    感谢
        86
    caoyufei   2018-06-01 15:09:28 +08:00
    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   2018-06-07 15:42:45 +08:00
    c2t5Y2M3MTY0MEBnbWFpbC5jb20=

    谢谢!
        88
    qcloud   2018-06-13 09:45:06 +08:00
    搭建之后,没有 IP 耶............
        89
    qcloud   2018-06-13 10:01:52 +08:00
    OTM1MjI3Nzk5QHFxLmNvbQ==

    3Q
        90
    demoxu   2018-06-14 13:16:18 +08:00
    @WildCat 能不能再 8081 代理制返回 https 的代理,或者指定延迟以下的
        91
    skyzan   2018-06-25 21:26:31 +08:00 via Android
    MTc4MTU2NDE5NkBxcS5jb20=
    感谢
        92
    a861123145   2018-07-22 20:05:44 +08:00
    YTg2MTEyMzE0NUBnbWFpbC5jb20K

    感谢
        93
    7lsu   156 天前
    bWlra3V5b0BnbWFpbC5jb20=
    谢谢
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2183 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 36ms · UTC 04:21 · PVG 12:21 · LAX 20:21 · JFK 23:21
    ♥ Do have faith in what you're doing.