Scylla开源免费的优秀代理 IP 池:自动验证、JSON API、基于 React 的 Web UI、Docker 支持 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
WildCat
V2EX    分享创造

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

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

    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
    Baboonowen
        1
    Baboonowen  
       2018-05-27 08:02:00 +08:00 via Android
    打破惨案
    flyxl
        2
    flyxl  
       2018-05-27 08:02:28 +08:00 via Android
    赞楼主,求 demo
    1daydayde
        3
    1daydayde  
       2018-05-27 08:06:43 +08:00 via iPhone
    先赞一个
    artandlol
        4
    artandlol  
       2018-05-27 08:18:05 +08:00 via iPhone
    YXJ0YW5kbG9sI2dtYWlsLmNvbQ==
    golmic
        5
    golmic  
       2018-05-27 08:30:47 +08:00 via Android   1
    i [at] lujq.me

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    感谢老哥
    chroming
        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
    skwfar
        64
    skwfar  
       2018-05-27 23:37:30 +08:00
    c2t3ZmFyQGdtYWlsLmNvbQ==
    十分感谢
    WildCat
        65
    WildCat  
    OP
       2018-05-28 00:43:37 +08:00
    @chroming 由于目前还有太多工作需要做,暂时不考虑替换 Sanic。Win 上应该可以用 Linux 子系统解决这个问题
    Lentin
        66
    Lentin  
       2018-05-28 00:45:42 +08:00
    bGVudGluQG91dGxvb2suY29t
    okface
        67
    okface  
       2018-05-28 00:47:31 +08:00 via Android
    zgp6300[at]dingtalk.com
    Seth8277
        68
    Seth8277  
       2018-05-28 00:54:09 +08:00 via Android
    bWFpbEBpbXNldGguY24=
    谢谢
    WhyLiam
        69
    WhyLiam  
       2018-05-28 09:15:31 +08:00
    bGlhbXpodWNlQGdtYWlsLmNvbQ==
    leeger
        70
    leeger  
       2018-05-28 09:27:42 +08:00
    emx2aXJtYWNoMUBnbWFpbC5jb20=

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

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

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

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

    感谢
    7lsu
        93
    7lsu  
       2019-06-13 15:51:01 +08:00
    bWlra3V5b0BnbWFpbC5jb20=
    谢谢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     944 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 19:28 PVG 03:28 LAX 11:28 JFK 14:28
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86