超详细百度翻译js逆向(token 和 sign)
1.抓包看看需要什么参数选中的数据包有点可疑
请求的url
和post
的参数
并且返回了这个内容
我们用fiddler抓包
看到具体的设置cookies
等过程
第一次请求返回了一个setcookie
,
第二次请求带上了第一次返回的cookies
,有两个有用的BAIDUID , FG
其他的是浏览器设置的,不用理会
刷新就知道了,只有sign和token
两个参数是变化的,query
是每次请求的字符串, langdetect
是检测语言的,
语言检测不用管,用python
实现很容易
2.分析sign
全局搜索sign
, 有点多,还是打断点吧,打一个xhr
断点
输入内容会直接断下来,查看堆栈
设置断下的url
是:https://fanyi.baidu.com/v2transapi?from=en&to=zh
查看堆栈,很明显send, ajax
,这两个不是,
向上一看,
和请求的 完全一样
先追sign
点进去
把函数粘贴进去,运行,让他报错
在这打两个断点,然后看i
是什么东西,
==不要在那直接框住,看i,==这样是错误的
可以多刷新几次,可以发现这玩应是个定值
运行,报错
n
就在他上面,把他复制进去,放在e
函数上面,
然后就发现就可以运行了,
sign
就抠出来了,
3.token
分析
发现他是在window.common.token
透露一下,window.common.token一般这种window.xxx.xxx一般是服务器返回的数据
总共有26个,不多,挨个找,
然后就会发现找不到!!!!
转全局搜素
发现在index
页面,结合一开始的抓包分析
试着写一下代码
def user_agent():ua = ['Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1464.0 Safari/537.36','Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.16 Safari/537.36','Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.3319.102 Safari/537.36','Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36','Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36','Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:17.0) Gecko/20100101 Firefox/17.0.6','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36','Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2224.3 Safari/537.36','Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36']return random.choice(ua)url = "https://fanyi.baidu.com/"
session = requests.session()
headers = {'User-Agent': user_agent(),'Host': 'fanyi.baidu.com','sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90",','sec-ch-ua-mobile': '?0','Sec-Fetch-Dest': 'document','Sec-Fetch-Mode': 'navigate','Sec-Fetch-User': '?1',
}
resp = session.get(url, headers=headers).content.decode()
res = session.get(url, headers=headers).content.decode()
第二个res
,就可以返回数据了。而且里面有token
然后用正则提取一下
token = re.findall(r"token: '(.*)',", res, re.M)[0]
调用execjs
获取sign
with open('baidufy.js', 'r', encoding='utf-8')as fp:js = fp.read()sign = execjs.compile(js).call('SDK', query)
检测输入的语言
query_lang = 'en' if 40 < ord(query[0:1]) < 91 or 96 < ord(query[0:1]) < 123 else 'zh'
trans_lang = 'en' if query_lang == 'zh' else 'zh'
构造data
data = {'from': query_lang,'to': trans_lang,'query': query,'transtype': 'realtime','sign': sign,'token': token,'domain': 'common'
}
url = "https://fanyi.baidu.com/v2transapi?from={}&to={}".format(query_lang, trans_lang)
req = session.post(url, headers=headers, data=data)
decode = req.content.decode('gbk','ignore')
loads = json.loads(decode)
res = loads['trans_result']['data'][0]['dst']
print(decode)
print(res)
全部代码
#!usr/bin/env python
# coding:utf-8
"""@File :baidufy.py@Author:小生@date : 2021-05-15 11:57
"""
import json
import zlibimport requests
import re
import random
import execjsquery = "may"
def user_agent():ua = ['Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1464.0 Safari/537.36','Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.16 Safari/537.36','Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.3319.102 Safari/537.36','Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36','Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36','Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:17.0) Gecko/20100101 Firefox/17.0.6','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36','Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2224.3 Safari/537.36','Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36']return random.choice(ua)url = "https://fanyi.baidu.com/"
session = requests.session()
headers = {'User-Agent': user_agent(),'Host': 'fanyi.baidu.com','sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90",','sec-ch-ua-mobile': '?0','Sec-Fetch-Dest': 'document','Sec-Fetch-Mode': 'navigate','Sec-Fetch-User': '?1',
}
resp = session.get(url, headers=headers).content.decode()
res = session.get(url, headers=headers).content.decode()
token = re.findall(r"token: '(.*)',", res, re.M)[0]
with open('baidufy.js', 'r', encoding='utf-8')as fp:js = fp.read()sign = execjs.compile(js).call('SDK', query)query_lang = 'en' if 40 < ord(query[0:1]) < 91 or 96 < ord(query[0:1]) < 123 else 'zh'
trans_lang = 'en' if query_lang == 'zh' else 'zh'
data = {'from': query_lang,'to': trans_lang,'query': query,'transtype': 'realtime','sign': sign,'token': token,'domain': 'common'
}url = "https://fanyi.baidu.com/v2transapi?from={}&to={}".format(query_lang, trans_lang)
req = session.post(url, headers=headers, data=data)
decode = req.content.decode('gbk','ignore')
loads = json.loads(decode)
res = loads['trans_result']['data'][0]['dst']
print(decode)
print(res)
query
里面放的是要查询的数据
超详细百度翻译js逆向(token 和 sign)相关推荐
- 【爬虫逆向案例】某道翻译js逆向—— sign解密
声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! [爬虫逆向案例]某道翻译js逆向-- sign解密 1.前言 2.步骤 3.源码 4.号外 1.前言 相信各位小伙 ...
- 【JS逆向百题斩】百度翻译接口逆向
百度翻译逆向爬虫 网站链接 https://fanyi.baidu.com/?aldtype=16047#auto/zh 接口链接 https://fanyi.baidu.com/v2transapi ...
- 百度翻译参数逆向过程
翻译网站sign参数逆向 网址:aHR0cHM6Ly9mYW55aS5iYWlkdS5jb20v JS调试 加密参数sign: 使用XHR断点 再查看方法调用栈 很容易定位到加密函数 经测试,原来就是 ...
- win7中Android开发环境搭建超详细(百度)
Android系统如火如荼,Android软件开发也相当流行,这里介绍如何一步步完成Android软件开发环境的搭建. 工具/原料 能联网的计算机 Java环境搭建 1 Android软建开发用的是J ...
- 超详细的Node.js瓦片拼接教程:从原理到实战,助你轻松完成地图应用开发
Node.js 瓦片拼接,是一项常用于地图应用开发的技术.本篇博客将从原理和实战两个方面介绍 Node.js 瓦片拼接的基本知识和技术要点: 一.什么是瓦片拼接? 瓦片拼接又称瓦片合成,是指将&quo ...
- dropzone.js php,超详细版Dropzone.js上传插件的使用实例-适用tp
其实一直都再找一款上传插件,但是今天遇到了一款相对比较好的插件,干净纯洁. [![](https://cdn.micuer.com/data/upload/20210121/60091f0d95453 ...
- python爬虫JS逆向加密破解之百度翻译
最近在从基础学习JS逆向,来分享一下百度翻译JS逆向的整个过程,也有助于自己加深记忆. JS逆向可以说是爬虫工程师必备的知识点了,但是如果对前端知识不够了解还是学起来很有难度的. 想学习的话可以在B站 ...
- JS逆向之巨量创意signature签名
文章目录 目标网站 接口分析 定位_signature生成位置 补环境还原js 编码测试 往期逆向文章推荐: JS逆向之百度翻译 JS逆向解析之有道翻译 JS逆向之企名科技 JS逆向之人口流动态势 j ...
- JS逆向之巨量星图sign签名
文章目录 1. 目标网站 2. 初步抓包分析 3. 定位加密参数生成位置 4. 编码测试 往期逆向文章推荐: JS逆向之百度翻译 JS逆向解析之有道翻译 JS逆向之企名科技 JS逆向之人口流动态势 j ...
最新文章
- Linux下快速安装TensorFlow的教程
- python培训比较好的机构-西安比较好的python培训机构推荐
- Java基础笔记18
- Hadoop -- ES -- CURD
- SELINUX导致的SSH密匙无法创建和访问的问题
- 跨考计算机报班,考研跨考的经验总结与分享
- 从数学到计算机 从莱布尼兹到冯诺依曼 从数理逻辑到算法分析
- 深度神经网络移动终端GPU加速实践
- Hash碰撞的解决方案
- 各种前端开发工具 - 你用过几种?
- find 命令详解 基于文件大小,名字和权限等的查找策略以及-path和-prune的详细解释
- 盘点国内最具实力的双足仿人机器人研发团队有哪些?
- linux 修改网卡 mac地址命令,Centos系统下查看和修改网卡Mac地址(附ifconfig命令格式)...
- Rabbitmq关于guest用户登录失败解决方法
- 大数据时代电视剧市场的价值观转型
- 如果我恨一个人,我就领他到中关村买相机。
- excel公式不自动计算_公式 | Excel根据起止日期,自动计算每月的计息天数
- flutter 开发中问题盘锦
- PCB中贴片元件封装焊盘尺寸的规范
- 添加列、删除列的sql
热门文章
- java 数据库并发访问_java – 提供IllegalStateException的并发数据库访问
- 网页|如何制作一个HTML网页
- 在ios手机上图片之间存在白色间隙
- 【Vim】更改Vim编辑器的字体大小、改变字号;永久改变字号;改变字体颜色、字体显示样式
- Windows Server 2012打开端口
- MFQ-PPDCS测试分析和测试设计 - 感觉有点虚,落地还是要结合实际工程应用
- ZDT_X57步进闭环驱动说明书Rev1.3
- Cocos2d-x 3.0坐标系详解
- atd和crond两个任务管理程序的区别
- 通信网络的组成与功能