webdriver原理,用油猴脚本模拟webdriver过爬虫检测
webdriver原理:
WebDriver 启动目标浏览器,并绑定到指定端口。该启动的浏览器实例,做为 web driver 的 remoteserver。
Client 端通过 CommandExcuter 发送 HTTPRequest 给 remote server 的侦听端口(通信协议: thewebriver wire protocol)
Remote server 需要依赖原生的浏览器组件(如:IEDriverServer.exe、chromedriver.exe),来转化转化浏览器的 native 调用。
使用油猴脚本模拟的思路
- 首先需要启动一个webscoket服务 ,作为浏览器控制端
这里的服务端选择 nodejs 实现
简单的写一下接受消息的逻辑
init表示初始化连接,close表示关闭
这里导出两个函数用来读取当前消息,和webscoket连接用于与客户端交互
const WebSocketServer = require('ws').Server;
const wss1 = new WebSocketServer({ port: 56666 });
function getConn() {
return conn000;
}
function getMsg() {
var msg_0 = msg;
msg = void 0;
return msg_0;
}
wss1.on('connection', function (conn, request, client) {
// 接收客户端返回的数据
conn.on('message', function message(data) {
var data1 = data.toString();
msg = JSON.parse(data1);
if (msg.type == 'init') {
conn000 = conn;
}
//一般不会用到的
if (msg.type == 'close') {
conn.close();
conn = void 0;
}
});
//客户端关闭连接
conn.on(