Skip to content

概览

Remote Browser:一个浏览器自动化框架,可以用脚本控制已经打开的浏览器。

Selenium 是通用的浏览器测试框架

无头浏览器

API

js
// 获取上下文句柄
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浏览器,然后手动在浏览器上完成登录操作,接下来爬虫代码就再也不需要考虑登录这个动作了,爬虫可以直接访问登录后的页面。

步骤:

  1. 使用参数 --remote-debugging-port=9222 已命令行的形式运行 Chrome
  2. 用普通浏览器访问 http://127.0.0.1:9222/json/version ,获取 webSocketDebuggerUrl 的参数值
  3. 使用 xxx 连接 Chrome
js
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 结构

微信小程序 抓包

采集方案策略之App抓包

结合项目来谈谈 Puppeteer

selenium-webdriver node库

Run Selenium tests with NodeJS | BrowserStack Docs

selenium-python

Wireshark

爬虫

crawler

爬虫实践

基于anyproxy的微信公众号文章爬取

微信公众号

简单内网映射到公网方法-公众开发-Sunny-Ngrok

WxPush-知乎WxPush-文档python发送微信及企业微信消息wechatpy 是一个微信 (WeChat) 的第三方 Python SDK, 实现了微信公众号、企业微信和微信支付等 APIwechatpy-自动消息接口

实践

  1. ngrok 将本地IP+端口映射到一个公网域名上
  2. 微信开发平台的URL填写上面的公网地址

企业微信

借助企业微信实现“调接口”给个人微信发消息https://zhuanlan.zhihu.com/p/465307569 WechatPush

企业微信--自建应用 自建应用和企业微信双向通信

实践 (成功)

只需要一个企业微信账号

可以推送给某个人、所有人、某个部门

  1. 注册企业微信(不用认证)
  2. 在应用管理新建自建应用
  3. 微信扫描 “企业微信-我的企业-微信插件-邀请关注 ” 中的二维码,这样微信就会收到企业微信的消息通知
  4. 按照 “企业微信开发者中心-消息推送-发送应用消息” 文档中的步骤操作,可以直接在本地服务中调用接口推送消息到自建应用
  5. 微信会收到来自企业微信的通知,通知效果和微信联系人发送消息的效果一样(微信首页和锁屏通知)

微信机器人

python中的wxpy、requests模块完成微信的基本操作

https://cloud.tencent.com/developer/article/1497693?from=15425

Python 微信机器人-向指定名称的好友发送微信消息

itchat

python发送微信及企业微信消息

wechaty

https://juejin.cn/post/6992409675371118622

短信

用Python每天自动给女朋友免费发短信-twilio

用Python发免费短信的正确姿势-twilio

简单介绍使用python发送短信的方式-Twiio

个人PC接入公网

  • 动态域名解析 + 端口映射 (需要搞个域名)
  • 使用花生壳之类的内网穿透服务(简单无脑,网速、流量差)

natapp

基于ngrok的内网穿透工具,有了它你可以直接将自己的本机发布到公网。

在网站上设置映射到本地的ip和端口

本地跑natapp程序时,会提供公网访问的地址

http://xxx.xx --> 127.0.0.1:2888

ngrok

Sunny-Ngrok(国内版)

frp

需要有公网IP

通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网 搭配宝塔面板弄了个简单的文件服务器

宽带开启公网ip访问家里电脑-麻烦

  • 打电话给运营商要求开通公网ip
  • 把光猫改为桥接(需要光猫超级管理员密码)
  • 路由器改为拨号上网
  • 申请花生壳ddns,用来解析路由器动态ip
  • 路由器配置ddns
  • 路由器给需要公网访问的机器做端口映射(不能映射80,443)

参考

软路由 桥接 端口转发 旁路由 单臂路由-视频

获取光猫超级管理员

视频

然后打开网页控制台,选中u盘的目录元素,编辑网页元素, 将目录相关的字段改为"..", 然后就可以进入上一级目录了, 一直重复这个操作,进入根目录, 然后进入/var/config.将lastgood.xml 复制到u盘, 然后电脑打开u盘上的 lastgood.xml, 里面有一个SUPER_PASSWORD,就是超级管理员密码