Java谷歌无头模式速度_如何使用谷歌浏览器无头模式来进行模拟

本文介绍了如何在Linux、Mac和Windows上设置Chrome无头模式,并提供了使用Python库pychrome进行编程控制的例子,包括加载网页、监听网络请求、截屏等功能。此外,还提到了谷歌的DevTools协议和官方API文档,为自动化测试和网页处理提供便利。
摘要由CSDN通过智能技术生成

如何开始

如果你是mac和linux需要版本59以上,window则需要60以上.然后运行

google-chrome \

--headless \                   # 运行chrome在无头模式

--disable-gpu \                # 如果你是window

--remote-debugging-port=9222   # 调试端口

如果没有报错的话 应该会显示

DevTools listening on ws://127.0.0.1:9222/devtools/browser/a788c70f-e72b-46c4-891a-6acf489ebd9d

ws:是谷歌的 DevTools协议 可以通过网络通信控制.但是在命令行选项中已经内置了一些常用选项

--dump-dom   #  打印document.body.innerHTML  |

--print-to-pdf #  创建页面的PDF

--screenshot   # 屏幕截图

--repl #  可以在命令行执行js代码

你也可以通过访问http://localhost:9222 来查看是否运行正常.正常情况下是

Inspectable WebContents

about:blank

通过编程使用

虽然官方推荐使用nodejs,但是作为一名pythoner加上电脑没有nodejs,还是选择了使用python.

在github找到了2个别人写好的轮子 pychrome pyppeteer

查看了一下作者更新日期 选择了pychrome.

直接使用pip install  git+https://github.com/fate0/pychrome.git

尝试官方例子

import pychrome

# create a browser instance

browser = pychrome.Browser(url="http://127.0.0.1:9222")

# create a tab

tab = browser.new_tab()

# register callback if you want

def request_will_be_sent(**kwargs):

print("loading: %s" % kwargs.get('request').get('url'))

tab.Network.requestWillBeSent = request_will_be_sent

# start the tab

tab.start()

# call method

tab.Network.enable()

# call method with timeout

tab.Page.navigate(url="https://github.com/fate0/pychrome", _timeout=5)

# wait for loading

tab.wait(5)

# stop the tab (stop handle events and stop recv message from chrome)

tab.stop()

# close tab

browser.close_tab(tab)

如果不报错 输出应该是这样的

loading: https://github.com/fate0/pychrome

loading: https://assets-cdn.github.com/assets/frameworks-f27d807afb610bf126cbfb9ce429438a328e012239e5a77fc8152b794553dfc0.css

loading: https://assets-cdn.github.com/assets/github-90814c795d836404981b54444a6ccc23fac2c6b0e1ce875e90784fbd83445bc5.css

loading: https://assets-cdn.github.com/assets/site-784ac435bab892893613aebf8fc79351510fb731a659406e0a2930f7643de45f.css

loading: https://avatars3.githubusercontent.com/u/6829628?s=40&v=4

光是官方例子就可以写一个简单的检测网页请求来进行下一步扫描了.

谷歌的官方api文档

使用pychrome只需要使用tab.call_method('方法名',参数字典).

例如https://chromedevtools.github.io/devtools-protocol/1-2/Page/ 中的 Page.enable

tab.call_method('Page.enable')

如果有参数,如Page.reload,则传入参数字典如

tab.call_method('Page.reload',scriptToEvaluateOnLoad

='alert(1)')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值