Python -- js反爬(五):伪装基本功
浏览器软件的组成
显示区域 渲染 DOM
所有浏览器相同的一些功能: BOM 输入网址 刷新 上一个页面下一个页面
执行js脚本 javaScript :文本处理 正则
不同浏览器会实现自己相应的属性 BOM
DOM(渲染引擎) BOM JS引擎 = 浏览器
DOM:
Html:hxml超集 - xml变种
1.html 增删改查api
2.html 数据格式
3.渲染 Canvas
BOM:
1.浏览器自己实现的一些类 location navigator
2.open ssl:btoa、AES、BES、MD5
JS引擎(解释器):ECMA-协议版本号:es5 es6 js解释性语言(官方没有解释器)
谷歌的v8、微软查克拉、ffg guickjs
JSON
HTTPS:
The connection to this site is encrypted and authenticated using TLS 1.2, ECDHE_RSA with P-384, and AES_256_GCM.
DOM BOM 都是js对象
所以js引擎都有一个功能:可以给js添加任意对象 删除任意对象,关联本地的代码
浏览器去实现的对象 默认添加一个特性:只读属性
伪造环境的用处
为什么要去伪造环境:因为js引擎没办法运行
不想去改变他的源代码js
js逆向最终的结果:
想要的效果:支持多线程、爬取速度快
扣取js :删除环境的一些代码
伪造环境 :伪造环境代码
简单的网站:扣取就可以了
复杂的网站:伪造环境
我就是浏览器
1.要伪造什么
1.全部伪造 python-jsdom(被检测)nodejs(被检测)
2.给指定的网站 伪造
如何知道这个网站检测了什么--通过调试、全局异常捕获、本地环境运行看报错
2.如何伪造