今天通过两个案例i,来剖析,
百度翻译
-
通过页面分析,我们输入的hello ,返回的是json 数据
我们查看request headers, 得知token ,值不变,sign值,会,变动,
-
因此得出js 代码,控制
我们通过全局搜索,sign,值,发现,并未找到
我们又通过全局搜索,token,值,发现,并未找到
我们又从url 入手,Request URL: https://fanyi.baidu.com/v2transapi?from=en&to=zh
分析, 取 v2transapi 进行全局搜索
貌似,找到,,我们一个个点击
可以看到sign 是个 函数,
我们点击函数,进去,
我们复制,js 代码下来, 保存为js文件
通过 pip install PyExecJs
来运行,
import execjs with open("百度翻译.js", "r", encoding="utf-8") as f: js_content = f.read() # python执行js代码 context = execjs.compile(js_content) # --------------注意-------------- # context指向了要执行的js文件,如果想要调用某个函数,可以用下面的call方法 # 第1个参数,为需要调用的函数名字 # 第2个参数,为给函数e传递的参数(是否传递要看调用的函数是否需要实参) ret = context.call("e", "happy new year my baby") print(ret)
发生异常
我们从 浏览器, 中找 i的值, 在哪,
记住了,得加个断点,多次, 运行发现它是个写死的值
但是,我们还是想知道,这个值在哪
我们再次运行,js, 又发生了异常
同样我们去 ,浏览器上找
我们把 这个n 函数,同样放入,js代码中,
再次运行, 发现了,
这样就解决了,sign组成,data数据,发送 请求, 完成 翻译
百度招聘
-
搜索Python 职位, 在北京的职位
url = http://zhaopin.baidu.com/quanzhi?query=Python&city=%E5%8C%97%E4%BA%AC
-
发现,ajax 加载数据,