• 请不要在回答技术问题时复制粘贴 AI 生成的内容
sofukwird
V2EX  ›  程序员

浏览器爬虫再进化

  •  
  •   sofukwird · Apr 2, 2024 · 12808 views
    This topic created in 946 days ago, the information mentioned may be changed or developed.

    通过 http proxy server 暴露浏览器资源, 基于 webrtc, 是直连, 无需二次中转

    具体请看视频演示: https://youtu.be/czWW5xlfcS8

    当前测试版目标用户为使用 WireGuard 的 linux 用户 核心源码暂未公开, 建议在虚拟机中尝试. xhe-vpn 目前仅支持 linux(windows 端需求反响强烈的话速度肝出 windows 端)

    git 仓库: https://github.com/remoon-net/xhe-webvpn 社区讨论: https://github.com/remoon-net/xhe-webvpn/discussions 问题反馈: https://github.com/remoon-net/xhe-webvpn/issues


    相比上次的版本去除了中心化, 虽然导致了配置更加繁琐, 但独立部署更简单了

    Supplement 1  ·  Apr 2, 2024
    标准化了浏览器爬虫, 借助暴露 http proxy server 可以在应用程序中直接访问在浏览器中需要 Cookie 的各种接口

    ----
    youtube 视频短链好像不解析了, 再发一次
    51 replies  •  2025-06-26 09:40:59 +08:00
    danbai
    danbai
    PRO
    Apr 2, 2024 via Android
    1
    这个是用来抓包吗
    coinbase
    coinbase
    Apr 2, 2024
    2
    cloudflare 防得住吗
    cherryas
    cherryas
    Apr 2, 2024❤️6
    3
    不会爬虫的觉得很酷,会爬虫的觉得有点莫名其妙
    musi
    musi
    Apr 2, 2024
    4
    我找个抓包工具不行吗?
    R18
    R18
    Apr 2, 2024
    5
    不是很懂,你的这个东西的场景在哪里,原生不是支持通过 browserWSEndpoint 来访问浏览器资源吗
    macaodoll
    macaodoll
    Apr 2, 2024 via Android
    6
    自己搭个 HTTP 代理过滤流量?与浏览器插件有何区别?如果说访问 HTTP 请求,这块有现成的东西可以用,而且比你这套方便成熟
    sofukwird
    sofukwird
    OP
    Apr 2, 2024❤️3
    7
    @coinbase 就是用来过 cloudflare 首次验证的
    coinbase
    coinbase
    Apr 2, 2024
    8
    @sofukwird 悟了,等会儿试试,能过 cloudflare 就是牛逼
    iyiluo
    iyiluo
    Apr 2, 2024
    9
    浏览器爬虫效率很低吧,免去了解密,但是效率是真低啊,只能爬小批量的数据
    godleon
    godleon
    Apr 2, 2024
    10
    演示视频里的电脑系统 ui 是什么
    sofukwird
    sofukwird
    OP
    Apr 2, 2024
    11
    @godleon Debian 12 - KDE Plasma 5.27.5
    Jesmora
    Jesmora
    Apr 2, 2024
    12
    啊这,一个好点的 IP 开个 tun 也能过 cf 啊,再不济 py 库有个过 cf 的啊
    RangerWolf
    RangerWolf
    Apr 2, 2024
    13
    @Jesmora py 哪个库能过 CF ?
    Enivel
    Enivel
    PRO
    Apr 2, 2024
    14
    没明白, chromium 本身不就提供远程访问的接口吗? 你这个绕了一圈是解决了什么特别的问题吗
    0o0O0o0O0o
    0o0O0o0O0o
    Apr 2, 2024 via iPhone
    15
    如果重点是浏览器与 VPN ,https://github.com/tailscale/tailscale/issues/3157 https://twitter.com/bradfitz/status/1451423386777751561 更酷更方便,是更应该研究的方向

    如果重点是过 cloudflare ,实际上你的设计中主要是借用 IP ,有太多方式可以将一台 Linux 电脑的 IP 共享给远程的应用程序使用,同样不需要 root 权限

    如果重点是方便应用程序自动化控制浏览器,容器与 selenium puppeteer playwright 更优雅也有更繁荣的生态,例如 https://github.com/FlareSolverr/FlareSolverr
    jones2000
    jones2000
    Apr 2, 2024
    16
    ”进化“ 不应该是什么配置都不用设,自适应最佳配置, 直接就能用。
    james122333
    james122333
    Apr 2, 2024 via Android
    17
    firefox 有 marionette
    sofukwird
    sofukwird
    OP
    Apr 2, 2024 via Android❤️1
    18
    @0o0O0o0O0o
    1. 浏览器与 VPN ,是的这很酷,我实现了
    2. 不是通过借 IP 的方式过 cloudflare ,而是接管通过了真人验证的浏览器页面来过
    3. 这个演示的重点是通过 http proxy 和应用程序集成,不依赖 puppeteer (这点蛮难解释,过段时间我把一个项目改造后开源就更清楚这是怎么做的
    ll5270
    ll5270
    Apr 2, 2024
    19
    没看明白用途是啥
    trigged
    trigged
    Apr 2, 2024
    20
    基于 devtools-protocol ?
    Pythoner666666
    Pythoner666666
    Apr 2, 2024
    21
    试试 RPA ,我觉得没有比这个更好用的了。
    flyqie
    flyqie
    Apr 2, 2024 via Android❤️4
    22
    你这项目是给黑灰产用的吧。。

    稍微靠谱点的爬虫项目哪有用这种模式的。。puppeteer 的很多优势你这种架构根本做不了。。

    被黑灰产拿来改改当肉鸡用倒是很合理。。
    c1985382
    c1985382
    Apr 2, 2024
    23
    @Pythoner666666 一般 RPA 用啥软件?
    sofukwird
    sofukwird
    OP
    Apr 2, 2024 via Android
    24
    @flyqie 你是看懂了的,这种架构对黑灰产确实非常好
    但工具只是工具,是好是坏要看人怎么使用它
    itIsUnbelievable
    itIsUnbelievable
    Apr 2, 2024
    25
    @sofukwird 是浏览器端和你本机建立了 wg 通道吗?请求所有网站都可以不用 cookie 吗?
    可以大麦抢票吗
    kuanat
    kuanat
    Apr 2, 2024❤️2
    26
    如果我没理解错的话,这个实现的是挺厉害的,只是应用场景非常受限。

    从功能上说,相当于被注入的页面向外提供 http 代理,该代理会复用浏览器环境,也就继承了相关 cookies 。

    使用这个方案,相比基于 webdriver/cdp 的方式,可以省去提取 cookies 、模拟登录的过程,通过人工在图形界面上操作一次即可。

    比较容易想到的局限在于:

    - 网站有多处或者基于访问频率的人机检测,就需要大量人工介入(甚至难以介入,因为通过代理触发的人机检测并不会显示在浏览器界面上)

    - 目标接口需要额外访问参数,一般反爬措施都会利用 vmp 混淆 js 代码来生成可以被服务器后端验证的动态参数

    如果我说错了还请 OP 指正一下,因为我确实想不到更好的应用场景了。
    stinkytofu
    stinkytofu
    Apr 2, 2024
    27
    @kuanat #26 你这么一解释我懂了, 就相当于软件逆向时注入进程了, 通过代理,可以使用网页当前所有的资源和权限。 那这个应用场景也很大啊, 特别是基于当前网页做一些功能增强,逆向啥的, 非常适合搞灰产。
    sml2h3
    sml2h3
    Apr 2, 2024❤️2
    28
    可以考虑走 chrome remote debugging 的方式哈,比如 DrissionPage 这个库~
    Rache1
    Rache1
    Apr 2, 2024
    29
    @sml2h3 #28

    好家伙,这个关键字往 Google 一丢,4 个赞助商广告,第 5 个才是 Github

    sml2h3
    sml2h3
    Apr 2, 2024❤️1
    30
    @Rache1 正常呀,因为这个方式好用而且很多人不知道哇,基本上没有指纹,秒过各大防御,API 也是 chrome 原生 API ,至于 DrissionPage 这个 py 库嘛也是一股清流,文档写的真好
    sofukwird
    sofukwird
    OP
    Apr 2, 2024 via Android
    31
    @kuanat 是的,就是这样(您说的好清晰呀)。基于访问频率的检测确实难过,目前是降低访问频率避免触发

    初始的应用场景是通过浏览器向其他人提供服务,如 p2p 文件共享,p2p 聊天,p2p 游戏联机
    fork3rt
    fork3rt
    Apr 2, 2024❤️1
    32
    @sml2h3 基本上没有指纹 这个不太理解哎, fonts / canvas / audio 这些常见的指纹 DrissionPage 不还是固定的吗?
    07aPzknB16ui9Cp3
    07aPzknB16ui9Cp3
    Apr 2, 2024
    33
    屌的,看来 WebRTC 能实现不少神奇效果
    Rache1
    Rache1
    Apr 2, 2024
    34
    @sml2h3 #30 🤩 看了一会儿,暂时没有使用场景,先收藏
    cctv6
    cctv6
    Apr 2, 2024
    35
    我之前也做过一个类似的浏览器爬虫。。。
    cctv6
    cctv6
    Apr 2, 2024
    36
    实现方式不一样,使用方式不一样,都是基于浏览器的
    Jirajine
    Jirajine
    Apr 2, 2024
    37
    @kuanat #26 这个应该等同于把浏览器里的 fetch 通过 rpc 暴露出来,简单点实现几十行代码都不用。其实意义不大,浏览器本身就可以通过 api 控制,那些 abuse as a service 厂商搞的花活比这恶心多了。
    qweruiop
    qweruiop
    Apr 2, 2024
    38
    很叼,一看就是专业的。这个场景肯定是。。。
    rozbo
    rozbo
    Apr 2, 2024
    39
    没明白什么优势,如果是浏览器环境,那个也没有处理浏览器指纹呀,直接用 playwright/puppeteer 不就直接完了?
    反正都是需要处理指纹和特征的。
    怎么说呢,小白用不了,大佬没必要用。。。小项目用不上,大项目也用不了。。
    sml2h3
    sml2h3
    Apr 2, 2024
    40
    @fork3rt 指的是没有那些特殊的自动化浏览器的特征
    march1993
    march1993
    Apr 2, 2024
    41
    这玩意儿和 https://github.com/chromedp/chromedp 有什么优势。。
    march1993
    march1993
    Apr 2, 2024
    42
    @march1993 chromedp 可以实现全自动/半自动爬虫,cookie 等行为也可以持久化,配合自己写个 proxy 还可以秒切代理。
    gongquanlin
    gongquanlin
    Apr 2, 2024
    43
    肉鸡的浏览器挂上这个脚本暴露出 http proxy server ;
    hacker 通过这个 proxy 直接拿着 cookie 请求,相当于实现了 csrf🤣

    既然都注入了,直接加上 eval 远程执行代码,不更好玩吗
    ignore
    ignore
    Apr 3, 2024
    44
    @sml2h3 #28 DrissionPage 真不错
    fork3rt
    fork3rt
    Apr 3, 2024
    46
    @sml2h3 了解了 谢谢大佬
    shermie
    shermie
    Apr 3, 2024
    47
    @sml2h3 又学到了一个新东西 感谢大佬
    sofukwird
    sofukwird
    OP
    Apr 5, 2024
    48
    @0o0O0o0O0o 原有的老项目使用 http proxy 改造成功了

    项目公开: https://github.com/remoon-cn/bbq

    我总结出来的优势有以下:

    http proxy 统一了接口地址, 不需要使用 chromdp 转来转去, 直接通过代理以用户身份访问接口

    程序里也不用引入爬虫相关的库, 使得代码量大大精简
    0o0O0o0O0o
    0o0O0o0O0o
    Apr 5, 2024❤️2
    49
    > 使用这个方案,相比基于 webdriver/cdp 的方式,可以省去提取 cookies 、模拟登录的过程,通过人工在图形界面上操作一次即可

    不这么认为,基于 webdriver/cdp 的方式一样可以让人工在图形界面介入,不要 headless 就可以
    - https://github.com/go-rod/rod/blob/main/lib/examples/launch-managed/main.go#L27
    - https://github.com/go-rod/rod/blob/main/lib/examples/use-rod-like-chrome-extension/main.go

    > 相当于被注入的页面向外提供 http 代理,该代理会复用浏览器环境,也就继承了相关 cookies

    cdp 方式注入一个 js 然后用别的语言暴露 API 不是更方便更强大吗?同样可以复用浏览器环境,同样可以暴露成 http proxy 。选择的库包装得够好就会让“程序里也不用引入爬虫相关的库, 使得代码量大大精简”没有太多说服力。

    所以这个项目在我眼里定位到爬虫相关有点奇怪,但我对 OP 的浏览器中的 VPN ( /t/961694 ) 很感兴趣,我觉得 OP 也可以往 VPN 与浏览器结合的常规应用上考虑
    james122333
    james122333
    Apr 7, 2024 via Android
    50
    @wuzzispacelake

    安装完浏览器前几件事情就是关掉 webrtc
    ashen114
    ashen114
    Jun 26, 2025
    51
    @0o0O0o0O0o 请教一下,因为 headless 体验上会比较友好,但有个问题是,headless ,遇到需要登录、验证码的情况,需要图形化界面操作,有什么方案推荐吗,除了 CDP (因为交互不太友好)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1705 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 100ms · UTC 23:40 · PVG 07:40 · LAX 15:40 · JFK 18:40
    ♥ Do have faith in what you're doing.