精华内容
下载资源
问答
  • DevTools协议 该存储库提供资源和讨论,以使各种浏览器,JavaScript引擎和调试工具所使用的开发人员工具协议保持一致。 目标 通过支持可在各种目标上正常运行的诊断工具生态系统,帮助授权Web开发人员构建出色的应用...
  • awesome-chrome-devtools:Chrome DevTools和DevTools协议生态系统中的出色工具和资源
  • Chrome Devtools协议PHP客户端 适用于PHP客户端。 基本用法 // context creates deadline for operations $ ctx = Context :: withTimeout ( Context :: background (), 30 /* seconds */ ); // launcher starts ...
  • Chrome Jint的Chrome devtools协议实现 仍处于实验性/非功能性阶段(目前绝对不执行任何操作)。 还针对Jint仍然是私有的分支机构而构建。 目标是实现devtools Debugger和Runtime域的各个部分-可能是其他v8-only...
  • chromedp软件包是一种更快,更简单的方式来驱动Go中支持Chrome DevTools协议的浏览器,而无需外部依赖(例如Selenium或PhantomJS)。 关于chromedp程序包chromedp是一种更快,更简单的方式来驱动Go中支持Chrome ...
  • devtools协议 浏览Chrome DevTools协议,其方法,事件和基本文档。 更多: 和 建造 # install dependencies npm i # regenerate the protocol files npm run prep # build it npm run build # serve it locally npm...
  • 它使用Google Chrome DevTools协议来自动化基于Chrome / Chromium的浏览器。 cdp4j可以做什么? 自动填写表格。 您可以轻松下载和上传文本,图像,处理PDF文件或截屏。 与Web应用程序之间的数据导入或导出。 从...
  • 学习木偶 :monkey_face: 了解如何使用通过DevTools协议控制Chrome或Chromium的Google Puppeteer编写测试。
  • 无需盲目浏览器即可快速,轻松地捕获Web截图,但使用Chrome DevTools协议! go-stare快速,轻松的网络屏幕截图,没有无头浏览器,但具有Chrome DevTools协议! 从GitHub上的源代码通过二进制文件进行资源安装用法...
  • 通过Chrome DevTools协议,该软件包可用于任何类型的浏览器自动化,脚本编写或调试。 cdp主要动机是公开Chrome DevTools协议的全部功能,并以一种可发现的自记录方式提供它。 提供高级浏览器自动化对于该项目而言...
  • 通过DevTools协议控制无头Chrome或Chromium的高级API。 它在Rust上与等效, 是Chrome DevTools团队维护的Node库。 它不是100%与Puppeteer兼容的功能,但是这里有足够的功能来满足大多数浏览器测试/网络爬网用例,...
  • 三氧化二Chrome 三氧化二Chrome提供了高级异步API,可通过控制Chrome或Chromium。 它具有对所有类型的支持,并且可以启动或完整(非无头)的Chrome或Chromium实例,或连接到已经运行的实例。 用法 ...
  • 该项目背后的主要用例是在容器环境中与进行交互,但是对于支持devtools协议的任何浏览器,它都应该适合开发服务器端和桌面应用程序。 该API已确定下来,并且已经实现了基本的代码覆盖率测试,但需要进行实际测试。...
  • 该程序使用Chrome DevTools协议来驱动Chrome会话,该会话将下载存储在Google相册中的照片。 默认情况下,它从库中最古老的项目开始,然后发展到最新的项目。 它可以增量运行,因为它可以跟踪上次下载的项目。 目前...
  • 该代码是从副本开发的,而Chrome DevTools WebDriver集成项目是借用了更多实用程序和测试方案的。 要在将Selenium驱动程序升级到alpha版本4.0.x之后访问Chrome Devtools API ,请参阅项目 手术 自定义驱动程序扩展...
  • 我的项目需求是这样的:在无headless的情况下实现保存mhtml格式的网页,假如允许有头的话...经过翻阅资料了解到了Chrome DevTools谷歌浏览器开发者工具远程调试协议中的Page.captureSnapshot方法来实现我的需求,代码如下

    我的项目需求是这样的:在无headless的情况下实现保存mhtml格式的网页,假如允许有头的话我可以用ctrl+s模拟人工保存页面的方式加上selenium带的chromeOptions.add_argument(’–save-page-as-mhtml’) 功能即可实现,但是考虑到部署服务器以及效率等问题需要在无headless的模式下是最理想的,经过翻阅资料了解到了Chrome DevTools谷歌浏览器开发者工具远程调试协议中的Page.captureSnapshot方法来实现我的需求,代码如下(这里我只贴出demo)

    # -*- coding: utf-8 -*-
    import time
    from selenium import webdriver
    from urllib.parse import urljoin
    
    class Spider(object):
        def __init__(self):
            self.chromeOptions = self.get_profile()
            self.browser = self.get_browser()
    
        def get_profile(self):
            chromeOptions = webdriver.ChromeOptions()
            chromeOptions.add_argument('--headless')         # 谷歌无头模式
            chromeOptions.add_argument('--disable-gpu')       # 禁用显卡
            chromeOptions.add_argument('window-size=1280,800')  # 指定浏览器分辨率
            chromeOptions.add_argument("--no-sandbox")
            return chromeOptions
    
        def get_browser(self):
            browser = webdriver.Chrome(chrome_options=self.chromeOptions)
            return browser
    
        def _get_page(self):
            initial_url = 'https://www.breakyizhan.com/chromeconsole/2285.html'
            self.browser.get(initial_url)
                # 执行 Chome 开发工具命令,得到mhtml内容
            res = self.browser.execute_cdp_cmd('Page.captureSnapshot', {})
            with open('{}.mhtml'.format(initial_url.split('/')[-1]), 'w',newline='') as f:
                f.write(res['data'])
    
    if __name__ == '__main__':
        l = Spider()
        l._get_page()
        l.browser.quit()
    
    
    展开全文
  • 要使用Selenium驱动程序3.x访问Chrome Devtools API ,请参见项目 例子 覆盖用户代理 可以调用cdp协议来调用方法,并在测试期间动态修改user-agent标头: import org.openqa.selenium.chrome.ChromeDriver ; ...
  • Simplechrome Webrecorder用于自动化的一个分支,已被修改以满足我们的需求。 根据我们自己的用例,对API /代码库的显着补充: 进行更改以控制Chrome和Chromium的最新版本 进行更改以方便使用事件循环 ...
  • dp 适用于aardio的库 取决于 例子 import win . ui ; /*DSG{{*/ var winform = win . form ( text = "aardio form" ; right = 385 ; bottom = 140 ) winform ....io ....import aaz ....var cdp = aaz ....cdp .... io ....
  • 基于DevTools协议+Chromium headless的客户端爬虫框架 - cteng的专栏 - 博客频道 - CSDN.NET
    展开全文
  • ChromeRemote ChromeRemote是Ruby中的的客户端实现。 它使您可以从Ruby代码中远程控制,检测,检查,调试和配置基于Chrome / Chromium的浏览器实例。 使用范例 ... require 'chrome_remote' require 'base64' ...
  • 库在一个单一的,内聚的和高度可组合的API中公开了所有协议域。 它支持无头和独立的Chrome版本,并支持通过Target域中的和扁平化会话模式创建隔离的环境(请参阅: : )。 出于调试目的,您可以使用我的其他项目:...
  • Chrome协议代理 chrome-protocol-proxy是小型的反向代理,旨在与。 它捕获所有发送给Chrome的命令和从Chrome接收的事件,将请求与响应合并,从解压缩消息,并提供易于阅读的彩色输出。 该工具是的分支(受其启发)。...
  • 通过Chrome DevTool协议注入Chrome起源和扩展的工具 用法 $ node injector.js --help Usage: injector [options] comfortably-run is a CLI utility which can be used to inject JavaScript into arbitrary Chrome...
  • <p>I have been working on a golang script that uses the <a href="https://chromedevtools.github.io/devtools-protocol/" rel="nofollow noreferrer">chrome devtools protocol</a> to: <p>1) Intercept a ...
  • 关于chromedp chromedp软件包是一种更快,更简单的方式来驱动Go中支持的,而无需外部依赖(例如Selenium或PhantomJS)。 正在安装 以通常的Go方式安装: ...例子 有关文档和示例,请参考。 此外,存储库包含更复杂的...
  • :wrench: 在或创建一个新的Chrome-Devtools-Protocol(CDP)会话。 :hammer: 启用Fetch域,让我们用自己的代码替代浏览器的网络层。 :eyes: 暂停每个请求并检查content-type标头以匹配pdf和xml类型。 :fast-...
  • 适用于人类的Chrome控制器,基于和python3.7 +。 为什么? Pyppeteer很棒,但是我不需要那么多 pyppeteer的拼写很混乱 事件驱动的编程并非总是明智的。 Selenium慢网络驱动程序经常带有内存泄漏。...
  • DevTools协议支持不支持上面的3个核心特性需求??? Chromium内核中的headless顶级模块好像是从M49版本开始加入的,它提供了多进程的、无头模式的、支持DevTools的自动化支持。 headless模块的...

    之前的做法是使用PhantomJS以及一个html+嵌套iframe包含目标网站URL+跨域dom操作的简单性能优化。

    PhantomJS实现下面的核心需求:
    (1)无头模式,然而PhantomJS内核基于老版本的QtWebKit,与最新版本的Chromium代码相比,版本太老了,很多特性用不了(虽然目前国内网站应该也还没开始用上这些?比如ServiceWorker、CSS Custom Properties、Web Components等等)
    (2)可以等待PhantomJS将页面load完成之后,注入JS执行,这之间需要支持下列核心特性:
        2.1 可以通过注入JS代码的方法导入外部JS资源,一般就是动态插入一个<script>元素,并设置src属性;
        2.2 可以用注入的JS代码来自动化地控制页面的scroll,或者根据特定网站的代码直接调用相关的JS Event Handler函数
        2.3 当然,PhantomJS应该允许从外部直接触发用户输入事件,比如根据某个CSS Selector Path定位到某个Element,然后触发其click事件,浏览器本身通常不支持这么做,但是浏览器的扩展,比如WebDriver这样的原本设计用于自动化Web测试的工具支持这么做

    现在的问题是,DevTools支持不支持这些核心需求?

    DevTools是一种基于WebSocket通信的协议,请求响应数据都是JSON格式,可以用一个桌面版本的Chrome PC版浏览器连接到手机上的Chrome for Android浏览器进行远程调试,但假如我并不需要这种UI界面呢?这里的客户端爬虫框架需要的是自动化处理,而不是UI+用户交互,DevTools理论上应该是可以支持的,但是可能存在某些限制或使用上的不便,需要进一步进行封装(用NodeJS)?

    Check List:逐一检查DevTools协议支持不支持上面的3个核心特性需求???

    Chromium内核中的headless顶级模块好像是从M49版本开始加入的,它提供了多进程的、无头模式的、支持DevTools的自动化支持。

    headless模块的编译设置里去除了对于gpu的依赖。(但是不清楚它实现了多大程度上的无头模式???如果真的完全支持的话,照理说应该可以成功编译出一个Windows命令行可执行文件,并且只依赖于网络和文件IO、多线程/IPC这些不需要UI界面参与的系统API)

    问题(TODO):
    (1)需要Git获取最新版本的Chromium内核代码,并使用新的GN,而不是gyp进行编译

    PS:不过我最初设想的客户端爬虫框架是给页面DOM树提供一套新的脚本binding(比如使用Lua),或者也可以实现成一种DSL专用爬虫任务描述语言。这有好处:

    (1)不需要用JS写繁琐的代码
    (2)页面原生的JS代码完全感觉不到有爬虫在抓取数据的存在,但是外部注入JS的方法理论上避免不了

    但是缺点是:
    (1)实现难度大,可能需要在内核代码级别做修改,增加一套新的bindings API,但我好像从来没听说过如何bind一个JavaScript以外的脚本语言?
    (2)这个新的脚本语言仍然是受限制的:比如说,它不应该修改dom,但是即使如此,考虑到页面原生JS可能正在并发的修改dom,这个地方不能有读写冲突;同时,它应该提供根据某种语法定位元素的API(可以重用CSS Selector的概念);它应该支持dom range对象的定制化的序列化数据导出;同时,它需要允许以编程的方式(脚本自动化)注入用户输入事件,让页面原生JS代码“以为”发生了scroll、gesture、click等UI交互操作。

    客户端爬虫也需要能够加载“广告过滤拦截”功能,这个倒是可以在headless代码的基础上修改实现的,但是现有方法html+iframe处理36kr网站的时候就出问题了:它在设置iframe的srcdoc属性为html字符串的时候,过滤掉了所有的<script>元素,这导致页面内容不能正常渲染为dom,原因是36kr现在使用了react.js+json数据来做render。

    其实如果直接基于那个json数据来做爬虫数据导出也不是不可以。。。


    展开全文

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 251
精华内容 100
关键字:

devtools协议