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

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

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

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

    然而,漫画网站是在 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  
       126 天前 via iPhone   ❤️ 23
    所以网站凭什么白给你爬?
    junksheng
        2
    junksheng  
       126 天前 via Android
    你想白女票,自然要做好斗智斗勇的准备
    hideokuze
        3
    hideokuze  
       126 天前
    这些事情属于“偷偷的进村,打枪的不要”,就是占网站便宜。要是真闹腾起来了怕不是连这个渠道都给你堵上了。
    dingwen07
        4
    dingwen07  
       126 天前 via Android
    试试看 headless ?不过多半也不行
    3dwelcome
        5
    3dwelcome  
    OP
       126 天前
    @dingwen07 也许 headless 可以吧,毕竟是同一个浏览器内核。

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

    被 cloudflare 打分识别为 BOT 后,一直返回 403,访问就跳 recaptcha 界面,就是不知道怎么互动。
    3dwelcome
        6
    3dwelcome  
    OP
       126 天前
    @whileFalse "所以网站凭什么白给你爬?"

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

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

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

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

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

    chrome 安装扩展绕过跨域安全策略
    1.Allow CORS: Access-Control-Allow-Origin
    2."Escape Cookie SameSite Policy"
    fank99
        32
    fank99  
       125 天前   ❤️ 1
    3dwelcome
        33
    3dwelcome  
    OP
       125 天前
    @SmiteChow 这插件有创意。

    我 ajax 跨域一直使用 chrome.exe 的命令行参数--disable-web-security,没想到还可以用插件直接修改网站返回的头数据,强行跨域。
    lap510200
        34
    lap510200  
       125 天前
    以前做投票类的项目就是用指纹在网关层干掉,因为活动奖品一旦值钱,总有人恶意脚本刷票
    pabupa
        35
    pabupa  
       124 天前
    @ShinichiYao 搜索引擎会爬图片吗?
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2200 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:51 · PVG 18:51 · LAX 02:51 · JFK 05:51
    ♥ Do have faith in what you're doing.