V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
3dwelcome
V2EX  ›  分享发现

这年头写个漫画爬虫都心力憔悴。

  •  
  •   3dwelcome · 2021-08-01 03:46:09 +08:00 · 8342 次点击
    这是一个创建于 1212 天前的主题,其中的信息可能已经有所发展或是发生改变。

    写了个自用小爬虫,追漫画用,每天刷一次,稳定运行了几个月。

    然而,漫画网站是在 cloudflare 上,突然之间就被识别为 BOT,拒绝访问了。可让我非常意外的是,同样的 IP,浏览器访问一点问题都没有!

    在 V2 查了前人资料,说是 TLS 指纹技术。顺藤摸瓜,发现了每个客户端都有指纹,难怪相同的 UA/Cookie,curl 不行,浏览器却可以,因为两者的 SSL 指纹是不一样的。( https://browserleaks.com/ssl 里的 JA3 Hash)

    于是乎,剩下了二个解决方案:

    1. 修改爬虫客户端,模仿浏览器的行为。但问题是,cloudflare 的 tls 指纹算法并没有公开,网上也搜不到相关信息,应该不可能用 JA3 这种开源解决方案。靠猜测编程,是非常不靠谱的行为,遂放弃。

    2. 把 google chrome 当成代理服务器,运行一个网页,用 websocket 和爬虫通讯,然后用 ajax 去访问目标站点。

    用 AJAX 暂时解决了问题,也不知道几个月后,会不会出现新问题。怀念以前 http 不加密一把梭的年代,什么都是明文,简单明了直接。

    35 条回复    2021-08-03 17:58:23 +08:00
    whileFalse
        1
    whileFalse  
       2021-08-01 07:32:33 +08:00 via iPhone   ❤️ 26
    所以网站凭什么白给你爬?
    junksheng
        2
    junksheng  
       2021-08-01 08:21:29 +08:00 via Android
    你想白女票,自然要做好斗智斗勇的准备
    hideokuze
        3
    hideokuze  
       2021-08-01 08:21:54 +08:00
    这些事情属于“偷偷的进村,打枪的不要”,就是占网站便宜。要是真闹腾起来了怕不是连这个渠道都给你堵上了。
    dingwen07
        4
    dingwen07  
       2021-08-01 09:17:35 +08:00 via Android
    试试看 headless ?不过多半也不行
    3dwelcome
        5
    3dwelcome  
    OP
       2021-08-01 10:50:14 +08:00
    @dingwen07 也许 headless 可以吧,毕竟是同一个浏览器内核。

    但我没用过,不知道怎么用 headless 来点图形验证码或者滑动码。

    被 cloudflare 打分识别为 BOT 后,一直返回 403,访问就跳 recaptcha 界面,就是不知道怎么互动。
    3dwelcome
        6
    3dwelcome  
    OP
       2021-08-01 10:53:24 +08:00
    @whileFalse "所以网站凭什么白给你爬?"

    网站又没说什么,个人爬虫每天访问量,不会超过 20 个页面,也就是爬点主流的海贼王,一拳超人之类的更新页面。

    主人没说啥,是 cloudflare 这个管家,私下把我给拒之门外。
    crab
        7
    crab  
       2021-08-01 10:57:55 +08:00
    找出源站 IP 绕过 cloudflare
    o00o
        8
    o00o  
       2021-08-01 11:12:38 +08:00
    @3dwelcome 爬就别想着能一劳永逸,这是一场攻防战,战争白热化之后别说不能爬,连普通用户都会受影响。
    参见淘宝(普通用户多刷几次网页都会出验证码)、
    闲鱼(砍掉网页版)、
    微信(网页版新用户不能使用、强制升级)、
    QQ (强制升级、网页版无法使用)
    AoEiuV020
        9
    AoEiuV020  
       2021-08-01 11:13:04 +08:00 via Android
    哪个网站反爬这么狠?
    不如试试爬国内的,那种随处可见的盗版网站基本都是随便请求的,
    3dwelcome
        10
    3dwelcome  
    OP
       2021-08-01 11:14:32 +08:00
    @crab “找出源站 IP 绕过 cloudflare”
    试了一下你的方法,好像不行。

    原理就是扫描互联网上所有 IPV4 段,主动记录和 IP 对应 443 接口的 SSL CERT 证书信息,然后看有没有源站的域名在里面。如果有,加上 HOST 大概率就能访问,绕过 cloudflare cdn 。

    工具的话,网上推荐了用 https://censys.io ,来遍历所有的证书和对应的 IPv4,但很可惜,查不出来。
    crab
        11
    crab  
       2021-08-01 11:19:48 +08:00
    @3dwelcome 哪个漫画站啊?理论上用 chrome 当代理最后也是会遇到因为请求次数多被识别 BOT 。
    3dwelcome
        12
    3dwelcome  
    OP
       2021-08-01 11:29:32 +08:00
    @crab “哪个漫画站啊”
    https://www.onemanhua.com/ 我是看他更新速度挺快的,基本上全网数一数二。

    "理论上用 chrome 当代理最后也是会遇到因为请求次数多被识别 BOT "
    应该是这样的,只能尽可能降低请求频率。好在 chrome 就算被识别成 bot, 还能输入验证码,不至于被永远卡死在 403 (手动狗头)
    zhengfan2016
        13
    zhengfan2016  
       2021-08-01 11:42:35 +08:00
    python 有专门绕过 cloudflare 的库
    icyalala
        14
    icyalala  
       2021-08-01 12:57:30 +08:00   ❤️ 11
    @3dwelcome
    "主人没说啥,是 cloudflare 这个管家,私下把我给拒之门外。"
    cloudflare 就是被请来干这类活的啊。。
    izzy27
        15
    izzy27  
       2021-08-01 14:02:56 +08:00
    我寻思你这漫画没人爬
    kxxoling
        16
    kxxoling  
       2021-08-01 15:21:13 +08:00   ❤️ 1
    cloudflare 软广 🐶
    tabris17
        17
    tabris17  
       2021-08-01 15:30:05 +08:00
    爬虫不要放服务器,用自己家电脑爬
    Lemeng
        18
    Lemeng  
       2021-08-01 15:30:12 +08:00
    白票就是用技术和时间来节省 money,牛就拿
    BBCCBB
        19
    BBCCBB  
       2021-08-01 16:26:31 +08:00
    用 puppeteer 直接运行 chrome 爬..
    no1xsyzy
        20
    no1xsyzy  
       2021-08-01 18:13:13 +08:00
    据说可以用 Cloudflare worker 爬,直接白名单(
    Keyblade
        21
    Keyblade  
       2021-08-01 19:51:16 +08:00
    V2 不是不让聊盗版么
    bxb100
        22
    bxb100  
       2021-08-01 19:52:06 +08:00
    @no1xsyzy #20 查到就封了
    512357301
        23
    512357301  
       2021-08-01 20:35:00 +08:00 via Android
    @3dwelcome 那就做个打码接口呢,把验证码传回到邮箱或者任意地方,并通知你,你通过指定的接口把验证码文本回传给爬虫,然后爬虫模拟输入。
    不过这种无法对付那种点击或者滑块的验证码
    Felldeadbird
        24
    Felldeadbird  
       2021-08-01 23:02:28 +08:00   ❤️ 2
    我有个方案。linux 服务器装个图形界面。 然后写个 chrome 扩展。浏览器打开一下目标站点,剩下就可以无限爬了。
    monkey110
        25
    monkey110  
       2021-08-02 02:24:12 +08:00
    追个漫画至于上爬虫么 身为小白都是用 chrome 插件 Your notifier 检测漫画更新状态
    ShinichiYao
        26
    ShinichiYao  
       2021-08-02 08:18:36 +08:00
    冒充搜索引擎
    ctro15547
        27
    ctro15547  
       2021-08-02 08:34:27 +08:00
    找个代理 多个 ip 随机用呗,Selenium
    okakuyang
        28
    okakuyang  
       2021-08-02 09:22:27 +08:00
    全自动反反爬挺难的吧,网上很多网站写了绕过办法,实际对新版 cloudflar 根本没效。
    2bNot2b
        29
    2bNot2b  
       2021-08-02 09:42:38 +08:00
    用 cloudflareworkers 试试?
    wtdd
        30
    wtdd  
       2021-08-02 09:58:32 +08:00
    现在这时代的网速,追漫画还需要上爬虫?
    SmiteChow
        31
    SmiteChow  
       2021-08-02 10:47:46 +08:00
    你方向错了
    ×爬虫
    √action 自动化

    chrome 安装扩展绕过跨域安全策略
    1.Allow CORS: Access-Control-Allow-Origin
    2."Escape Cookie SameSite Policy"
    fank99
        32
    fank99  
       2021-08-02 11:02:48 +08:00   ❤️ 1
    3dwelcome
        33
    3dwelcome  
    OP
       2021-08-02 11:21:59 +08:00
    @SmiteChow 这插件有创意。

    我 ajax 跨域一直使用 chrome.exe 的命令行参数--disable-web-security,没想到还可以用插件直接修改网站返回的头数据,强行跨域。
    lap510200
        34
    lap510200  
       2021-08-02 11:40:30 +08:00
    以前做投票类的项目就是用指纹在网关层干掉,因为活动奖品一旦值钱,总有人恶意脚本刷票
    pabupa
        35
    pabupa  
       2021-08-03 17:58:23 +08:00
    @ShinichiYao 搜索引擎会爬图片吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3173 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 13:42 · PVG 21:42 · LAX 05:42 · JFK 08:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.