概览
Remote Browser:一个浏览器自动化框架,可以用脚本控制已经打开的浏览器。
Selenium 是通用的浏览器测试框架
无头浏览器
- Puppeteer : 控制 Chrome 或 Chromium 的 Node 库
- Puppeteer 初探-示例
API
// 获取上下文句柄
const bodyHandle = await frame.$('body');
const html = await frame.evaluate(body => body.innerHTML, bodyHandle);
await bodyHandle.dispose();
const htmlHandle = await page.$('html');
const html = await page.evaluate(body => body.outerHTML, htmlHandle);
await htmlHandle.dispose();
🔥🔥🔥
const bodyInnerHTML = await page.$eval('body', dom => dom.innerHTML);
/***
page.evaluate: page context
page.evaluateHandle: page context, page.evaluateHandle returns in-page object (JSHandle).
page.$eval: browser context
page.mainFrame().$(selector)
executionContext.evaluateHandle: in-page object (JSHandle)
Frame、JSHandle、ElementHandle 可以执行 executionContext
***/
- 注意
page.screenshot 异步执行,如果在执行截屏之前浏览器已经 close
会报错
远程调试模式
先启动一个支持远程调试的Chrome浏览器,然后手动在浏览器上完成登录操作,接下来爬虫代码就再也不需要考虑登录这个动作了,爬虫可以直接访问登录后的页面。
步骤:
- 使用参数
--remote-debugging-port=9222
已命令行的形式运行 Chrome - 用普通浏览器访问
http://127.0.0.1:9222/json/version
,获取webSocketDebuggerUrl
的参数值 - 使用
xxx
连接 Chrome
const webSocketDebuggerUrl = 'ws://127.0.0.1:9222/xxx'
const browser = await puppeteer.connect({
browserWSEndpoint: webSocketDebuggerUrl,
});
参考
remote-browser:与 Puppeteer 类似的npm 包,使用【浏览器扩展程序 extensions】开发
cheerio-解析DOM:服务端根据 HTML 生成 DOM 结构
Run Selenium tests with NodeJS | BrowserStack Docs
Wireshark
爬虫
微信公众号
WxPush-知乎WxPush-文档python发送微信及企业微信消息wechatpy 是一个微信 (WeChat) 的第三方 Python SDK, 实现了微信公众号、企业微信和微信支付等 APIwechatpy-自动消息接口
实践
- ngrok 将本地IP+端口映射到一个公网域名上
- 微信开发平台的URL填写上面的公网地址
企业微信
借助企业微信实现“调接口”给个人微信发消息https://zhuanlan.zhihu.com/p/465307569 WechatPush
企业微信--自建应用 自建应用和企业微信双向通信
实践 (成功)
只需要一个企业微信账号
可以推送给某个人、所有人、某个部门
- 注册企业微信(不用认证)
- 在应用管理新建自建应用
- 微信扫描 “企业微信-我的企业-微信插件-邀请关注 ” 中的二维码,这样微信就会收到企业微信的消息通知
- 按照 “企业微信开发者中心-消息推送-发送应用消息” 文档中的步骤操作,可以直接在本地服务中调用接口推送消息到自建应用
- 微信会收到来自企业微信的通知,通知效果和微信联系人发送消息的效果一样(微信首页和锁屏通知)
微信机器人
python中的wxpy、requests模块完成微信的基本操作
https://cloud.tencent.com/developer/article/1497693?from=15425
itchat
wechaty
https://juejin.cn/post/6992409675371118622
短信
个人PC接入公网
- 动态域名解析 + 端口映射 (需要搞个域名)
- 使用花生壳之类的内网穿透服务(简单无脑,网速、流量差)
基于ngrok的内网穿透工具,有了它你可以直接将自己的本机发布到公网。
在网站上设置映射到本地的ip和端口
本地跑natapp程序时,会提供公网访问的地址
如 http://xxx.xx --> 127.0.0.1:2888
Sunny-Ngrok(国内版)
需要有公网IP
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网 搭配宝塔面板弄了个简单的文件服务器
宽带开启公网ip访问家里电脑-麻烦
- 打电话给运营商要求开通公网ip
- 把光猫改为桥接(需要光猫超级管理员密码)
- 路由器改为拨号上网
- 申请花生壳ddns,用来解析路由器动态ip
- 路由器配置ddns
- 路由器给需要公网访问的机器做端口映射(不能映射80,443)
参考
获取光猫超级管理员
然后打开网页控制台,选中u盘的目录元素,编辑网页元素, 将目录相关的字段改为"..", 然后就可以进入上一级目录了, 一直重复这个操作,进入根目录, 然后进入/var/config
.将lastgood.xml
复制到u盘, 然后电脑打开u盘上的 lastgood.xml
, 里面有一个SUPER_PASSWORD
,就是超级管理员密码