面向未来的chromedp
因为 Python 下使用 webdriver 注入 cookie 出现问题,所以尝试寻求解决方案。最先想到的是利用 Java 的框架,因为公司里其它人使用 Java 可以成功。但在看了一点 Java 代码之后,这个念头突然就弱了下来。实在太复杂了。
那么,还能使用什么呢?自己还会一点 Go ,所以去搜 Go 下驱动浏览器的解决方案。还真找到了一个。这就是 chromedp。
chromedp 和传统的 webdriver 不一样,它是利用 Go 语言实现的 Chrome Debug Protocol,没有其它依赖,直接操作浏览器。
其实,我对 CDP 一无所知。秉承着勇于探索的精神,我花费了一晚上和一上午来研究 chromedp 怎么用。没有文档,只能通过 API 接口和例子以及源代码来艰难建立感觉和概念。
在胡乱冲撞源代码并暴力测试了几个小例子之后,终于有了一点点概念和感觉。
cdp 能干的事情很多,可以完全替代 webdriver:
- 查询页面元素
- 模拟键盘和鼠标事件
- 便捷的表单输入
- 注入 cookie,取出 cookie
- 等等
我尝试成功的事情:
- 模拟点击,粘贴,输入字符
- 注入北京时间的 cookie,并成功登录主页(受到这个过程的启发,在 Python 环境下,也通过指定 domain 成功解决不能登录北京时间的问题)
- 我的微信文章格式化自动流程进一步完善:多了一个可以粘贴的自动化。现在只缺少复制的自动化了。
chromedp 挺有趣,也很强大,目前而言,学习成本有些高,如果时机合适,倒是不妨一试。
不知是该恭喜,还是该怎样,总之阅读到该文的,你是第 人。每一次刷新,都是不同的自己。