爬虫JS渗透百度翻译

目的:通过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)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42662411/article/details/104478283