目的:通过js渗透实现本地翻译 即将百度翻译的工作在本地实现
首先获取百度翻译的链接:https://fanyi.baidu.com/ 将要翻译的语种写在上面
对比翻译不同的语种 可能是sign以及token值发生改变 所以接下来的目的就是找到sign值以及token值
将找到的js放入本地中 注意:这里需要pip install execjs 当然使用execjs小樱桃在node.js下才能运行 需要下载node.js
此时执行程序后发现
即需要去判断i是什么东西
然后发现i是一个全局变量 只需要在js里面定义var i=null就行
执行程序完 发现又报错 n未定义
找到token值
在network中全局搜索
最终获得sign值以及token值
翻译代码如下
import execjs import re import json import time import requests
with open(r'D:\爬虫高级班\JS渗透\百度翻译渗透\baidu.js','r',encoding='utf8') as f: JS = f.read() #print(JS)
JsFunc = execjs.compile(JS) result = JsFunc.call('e','恭喜发财',) print(result)
sess = requests.session()
sess.headers={ 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36' } for i in range(2): url = 'https://fanyi.baidu.com/' r = sess.get(url) #rint(r.text) #window.gtk = '320305.131321201'
#token的问题 会变 需要请求两次
gtks = re.search(r"window.gtk = '(.+?)';", r.text) #print(gtks.group(1)) gtk = gtks.group(1)
#要翻译的字符串 SourceString = '告白气球' #找到sign sign = JsFunc.call('e',SourceString,gtk) #print(sign) #找token tokens = re.search(r"token: '(.+?)'", r.text) token = tokens.group(1) #print(token)
data = { 'from': 'zh', 'to': 'en', 'query': SourceString,
'simple_means_flag': '3', 'sign': sign, 'token': token, } url = 'https://fanyi.baidu.com/v2transapi' response = sess.post(url,data=data) #print(response.json()) result_data = response.json()['trans_result']['data'][0]['dst'] print('英文:',result_data)
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试