爬虫破解js加密破解(二) 有道词典js加密参数 sign破解

2023-11-04

在爬虫过程中,经常给服务器造成压力(比如耗尽CPU,内存,带宽等),为了减少不必要的访问(比如爬虫),网页开发者就发明了反爬虫技术。

    常见的反爬虫技术有封ip,user_agent,字体库,js加密,验证码(字符验证码,滑动验证码,点触式验证码等)。所谓魔高一尺道高一丈。有反爬虫,就有反反爬虫技术。本文重要讲js加密的破解方法。

 

js加密一般是在请求头或者请求参数加入加密有的字段。爬虫开发者不知道加密的方法,就能够抵挡一些低级爬虫工程师。但是js加密函数或者过程一定是在浏览器完成, 

也就是一定会把js代码暴露给使用者。通过阅读加密算法,就可以模拟出加密过程,从而达到破解。

 

js破解的方式有:

  一:把js代码翻译成Python或者java等代码。这个对于大部分的爬虫工程师是有难度的。因为爬虫偏向于后端的处理,很少有爬虫工程师去精通前端的知识,还有一点就是经过加密,混要,压缩的js代码阅读性很差的。即使是开发三五年的前端工程师,也很少能看懂的。更何况是没有搞过js的爬虫工程师呢?当然也有一些高手除外。

    二: 执行js代码。可以使用Python的一些第三方库比如 pyv8,或者execjs去执行js代码。这个代码效率很高的。

  三:使用selenium或者appiun等框架。强烈不建议使用。因为代码的稳定性和效率都很低。

 

有道词典参数破解分析流程:

  第一步:我们在页面输入需要翻译的单词 好人。输出结果是  A good man。请求接口是 url= http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule

  输入参数如下图所示。

  

第二部:遇到加密的请求参数,一般是去js代码里面找这个接口。

    

   我们在 http://shared.ydstatic.com/fanyi/newweb/v1.0.15/scripts/newweb/fanyi.min.js文件中找到了 ajax请求接口。

  

 

   格式化js代码:

   找到核心代码如下:

        

 

   加密过程找sign,如下:

      

 

 

 最后一步。Python代码实现加密过程。

代码如下:

 
  
# coding:utf-8

# 破解js加密,版本2
'''
通过在js文件中查找salt或者sign,可以找到
1.可以找到这个计算salt的公式
r = "" + ((new Date).getTime() + parseInt(10 * Math.random(), 10))
2.sign:n.md5("fanyideskweb" + t + r + "p09@Bn{h02_BIEe]$P^nG");
md5 一共需要四个参数,第一个和第四个都是固定值得字符串,第三个是所谓的salt,
第二个参数是输入的需要翻译的单词
'''

import requests
import time, random
import requests
session = requests.session()




ts = str(int((time.time()*1000)))
salt = str(ts) + str(random.randint(0, 10))

print ts
print salt



def getmd5(v):
import hashlib
md5 = hashlib.md5()
md5.update(v)
sign = md5.hexdigest()
return sign

def getSign(key, salt):

sign = "fanyideskweb" + str(key) + str(salt) + "p09@Bn{h02_BIEe]$P^nG"
sign = getmd5(sign)
return sign

def youdao(key):

url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
data = {
"i":key,
"from":"AUTO",
"to":"AUTO",
"smartresult":"dict",
"client":"fanyideskweb",
"salt": str(salt),
"sign":getSign(key, salt),
"ts":ts,
"bv":"6074bfcb52fb292f0428cb1dd669cfb8",
"doctype":"json",
"version":"2.1",
"keyfrom":"fanyi.web",
"action":"FY_BY_REALTIME",
"typoResult":"false",


}
headers = {

"Host":"fanyi.youdao.com",
# "Proxy-Connection":"keep-alive",
"Content-Length":len(data),
"Accept":"application/json, text/javascript, */*; q=0.01",
"Origin":"http://fanyi.youdao.com",
"X-Requested-With":"XMLHttpRequest",
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36",
"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
"Referer":"http://fanyi.youdao.com/",
"Accept-Encoding":"gzip, deflate",
"Accept-Language":"zh-CN,zh;q=0.9",
"Cookie":"OUTFOX_SEARCH_USER_ID=119019685@10.168.8.63; JSESSIONID=aaaAioBu8RNDK46QQgoKw; OUTFOX_SEARCH_USER_ID_NCOO=585978009.1173552; UM_distinctid=1690e1aeb4938-0e3d396c4bdd96-551f3c12-100200-1690e1aeb4b7e; ___rl__test__cookies=1550723437154",


}
result =requests.post(url=url, data=data, headers=headers)
print result.text



if __name__ == '__main__':
youdao("好人")

 

输出结果:

 

本博客写于2019年2月21日。不保证代码一直有效。仅供参考学习,请勿用于商业用途上。

转载于:https://www.cnblogs.com/xuchunlin/p/10412505.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

爬虫破解js加密破解(二) 有道词典js加密参数 sign破解 的相关文章

  • 终止for循环的方式

    continue break return 1 continue 当程序运行到 continue 语句时 会终止当前的这一次循环 进入下一次的循环中 它 适用于所有的循环结构 for int i 0 i lt 10 i 执行内容 conti
  • stm32F103C8T6 keil5编译完成使用XCOM进行串口打印时乱码

    一 检查波特率 串口调试工具和main c的串口初始化一定要相同 二 检查编码格式 第一步 点击keil5的小扳手图标 修改为Chinese GB2312 Simplified 这样一来 代码的中文就可以显示出来啦 第二步 XCOM这款串口
  • 安装Visio 2013与原本的office冲突的最终解决方案

    一 下载office visio 2013 二 开始安装 但是提示卸载原本的office 三 网上找寻答案 于是按照这篇文章https jingyan baidu com article 19192ad8c1d6dae53e570735 h
  • HashMap常用API及注意事项

    map clear map size map isEmpty map containsKey 判断 map containsValue map get key map put key value map putAll otherMap ma
  • ubuntu18.04安装cmake3.18.0

    ubuntu18 04安装cmake3 18 0 1 本方法可适用安装任何版本的cmake 可以在官网中找到需要的版本 本文以3 18 0为例 https cmake org files 2 wget https cmake org fil
  • Javaweb和微信小程序项目部署阿里云服务器总结(上)

    谈到微信小程序的java后台怎么部署在阿里云服务器上的问题 弯弯绕绕 好多坑 网上的博客资料也特别乱 博主也是在没有任何经验和指导下花了几天的工夫才完成的 这里为了方便大家不踩坑 总结了下整个流程和注意事项 由于篇幅原因 只讲重点的地方 所
  • 软件测试(3)——白盒测试

    文章目录 白盒测试 白盒测试方法 静态测试 人工代码检查 软件度量 其它方法 动态测试 覆盖测试分析 运行时错误检测 覆盖测试 逻辑覆盖方法 路径测试 数据流测试 白盒测试 白盒测试也称结构性测试 逻辑驱动测试 基于程序的测试 特点 将程序
  • Android App开机自启动

    最近项目中 有用到开机自启动的功能 这里做一下总结 供大家学习探讨 Android 开机启动延迟问题 Android 开机自启动被拦截问题 实战演练 测试手机 红米手机 Redmi 6A 安卓version 9 华为手机 DUA AL00
  • vs2010 vs2013等vs中如何统计整个项目的代码行数

    vs2010 vs2013等vs中如何统计整个项目的代码行数 在一个大工程中有很多的源文件和头文件 我如何快速统计总行数 解决方案 b b b b ctrl shift F 查找选项选 正则表达式 具体步骤 1 鼠标停靠在你的项目解决方案附
  • ERRORS: auth.User.groups: (fields.E304) Reverse accessor for ‘User.groups‘ clashes with reverse acce

    写博客网站后台 设计数据库结构时 博客 Article 表中定义了一个作者外键 author models ForeignKey settings AUTH USER MODEL verbose name 作者 这个外键是网站注册用户 这样
  • Oracle数据库获取uuid函数

    Oracle新建系统表时 要求主键为32位uuid 猜测Oracle肯定会提供相关的函数 翻阅相关文档 果然发现Oracle提供的函数 sys guid 用于获取32位uuid 简单使用为 select sys guid from dual
  • 【Linux内核中的并发控制】- 自旋锁

    在内核中会经常看到spin lock 自旋锁 它到底是个神马东西 在驱动相关的书籍和论坛中查阅了不少资料 看的也是云里雾里 现在将知识罗列总结一下 便于日后回顾 1 自旋锁定义 在Linux内核并发控制中最常见的锁就是自旋锁 自旋锁最多只能
  • POJ 1302 Blue Gene, Jr.(递归实现)

    Inspired by IBM s Blue Gene project the CEO of Universal Biological Machinery UBM has called on you UBM s top software e
  • Intellij IDEA 报错java.lang.NoClassDefFoundError

    Intellij IDEA 报错java lang NoClassDefFoundError Intellij IDEA 报错java lang NoClassDefFoundError 11 Aug 2018 23 48 24 686 严
  • MQTT通信协议的简介、特点及实现原理 - 第1章

    目录 1 1 MQTT 特点 1 2 MQTT实现原理 1 3 术语 相关链接 MQTT是一种基于 发布 订阅 模式的 轻量级 通信协议 由IBM于1999年发布 MQTT专门针对 物联网设备 开发 是一种 低开销 低带宽占用的即时通讯协议
  • python之异常、异常的捕获、else、finally、主动抛出异常raise

    注意 当一个函数的返回值是一个布尔值的时候 如果把这个函数做为条件放到 if 或者while后面的时候 后面不用再写 True 也就是说 此时的 if 函数名 等价于 if 函数名 True 如果函数返回True 则原式就等于if True
  • AttributeError: ‘open3d.open3d.geometry.PointCloud‘ object has no attribute ‘select_by_index‘

    如果你调用时的方式是 pcd select by index ind 但是你这样却报了 AttributeError open3d open3d geometry PointCloud object has no attribute sel
  • i.MXU6LL - 制作烧录SD卡详细步骤

    i MXU6LL 制作烧录SD卡详细步骤 目录 i MXU6LL 制作烧录SD卡详细步骤 1 SD卡分区 2 拷贝uboot到SD卡 3 拷贝kernel和dtbs到SD卡 4 拷贝文件系统到SD卡 本文所有操作均在root模式下进行 本篇
  • python笔记:3.2.2.8pandas数据操作_时间序列范围和偏移量

    coding utf 8 Created on Fri May 24 14 47 40 2019 author User import pandas as pd print n 月末时序索引 pd date range start 2017
  • 浅谈游戏业务遭遇攻击的防护措施

    很多人不禁问DDoS攻击是什么 尤其是对刚入行的新手小白来说 对于这方面完全不懂 那么今天我们就来讲讲它是什么又会造成什么危害 该如何防御 DDoS攻击也叫分布式拒绝服务 Distributed Denial of Service 简称DD

随机推荐

  • Loadrunner 8.1 安装 & 卸载收藏(转载)

    Loadrunner 8 1 安装 1 下载Loadrunner8 1 官方英文版 2 安装Loadrunner8 1 3 破解 http download csdn net source 1348756 l 具体安装操作步骤如下 用虚拟光
  • 华为OD机试 - 数组拼接(Java)

    题目描述 现在有多组整数数组 需要将它们合并成一个新的数组 合并规则 从每个数组里按顺序取出固定长度的内容合并到新的数组中 取完的内容会删除掉 如果该行不足固定长度或者已经为空 则直接取出剩余部分的内容放到新的数组中 继续下一行 输入描述
  • Kali-Linux下载安装

    文章目录 下载 安装 准备 Kali Linux Live U盘安装过程 下载 1 进入kali逛网下载镜像文件kali官网 在Downloads中选择Download Kali Linux 如下图所示 2 根据电脑配置 选择适合自己的版本
  • Svg五角星、太阳花、多边形的绘制

    我们在学习平面几何中 学到了多边形的概念 有多少条边就有多少个顶点 本篇我们介绍一下如何用svg来绘制规则的多边形 比如三角形 五角星和任意多边形 在此 我们用到polygon标签
  • Blender 批量给材质

    妈咪妈咪哄 1 选中需要批量上材质的物体 2 ctrl 加选有目标材质的物体 3 复制材质至选中
  • 神经网络 AI torch 构造自己的数据集(包含标签或者不包含标签)

    AI learning 用于学习train 验证val的图片目录结构形式如下 一般为自己构造的图像数据的目录 这是一个简单的图像二分类问题 两个类别为正常 normal 或者异常 abnormal 数据集分为 train 训练集 val 验
  • 筛选(数组里竖向都为0的删除)

    let arr 0 0 0 0 0 1 5 6 0 0 0 0 0 0 0 0 3 1 5 6 0 0 0 0 0 0 0 0 0 1 5 6 0 4 0 0 0 0 1 0 0 1 5 6 0 0 3 0 0 0 0 0 2 1 5 6
  • VMware-tools安装以及找不到共享文件夹的解决办法

    VMware tools安装以及找不到共享文件夹的解决办法 一 安装VMWare tools 1 以root身份进入linux 2 点击VMWare虚拟机栏目下的安装VMwaretools选项 如果安装过该工具 这个选项会显示为重新安装或者
  • 表的内连接、外连接

    1 内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选 是使用的最多的连接查询 select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件 一般的写法 select ename d
  • api接口、RPC、WebService分别解决什么问题?

    api接口 RPC WebService分别解决什么问题
  • 深度学习中的迁移学习介绍

    迁移学习 Transfer Learning 的概念早在20世纪80年代就有相关的研究 这期间的研究有的称为归纳研究 inductive transfer 知识迁移 knowledge transfer 终身学习 life long lea
  • Java中的DatagramPacket与DatagramSocket的初步

    1 基本概念 a DatagramPacket与DatagramSocket位于java net包中 b DatagramPacket表示存放数据的数据报 DatagramSocket表示接受或发送数据报的套接字 c 由这两个类所有构成的网
  • 安装GPU版本的pytorch

    前言 最近新建了一个虚拟环境 但是在跑代码的时候出现问题 libc10 cuda so cannot open shared object file No such file or directory 去网上搜了一下 说是安装的pytorc
  • 浅析消费金融风控之贷中、贷前、贷后风控(风控模型、决策引擎)

    消费金融迎来 爆发增长 期 预计到2020年 我国消费信贷总市场规模将达到45万亿元 年复合增长率将达到18 前景广阔的消费金融市场 将成为我国经济发展的重要内驱力 业务痛点 征信体系缺失 分支风控标准不一 欺诈手段层出不穷 多头借贷现象普
  • 谈谈「数据仓库构建与分层」

    1 先导知识之 数据库与ER建模 1 1 数据库 DataBase 数据库是按照数据结构来组织 存储和管理数据的仓库 是一个长期存储在计算机内的 有组织的 可共享的 统一管理的大量数据的集合 数据库是以一定方式储存在一起 能与多个用户共享
  • CentOS7搭建Redis Cluster

    目录 什么是Redis Cluster Redis集群介绍 Redis 集群的数据分片 Redis 集群的主从复制模型 Redis 一致性保证 搭建Redis Cluster 三主三从 准备工作 启动所有节点服务 建立集群关系 验证 集群状
  • 找回误删除的文件

    author skate time 2009 11 19 今天在网上帮个美女恢复数据 他昨天不小心 把重要文件删除 而今天又急用 于是我就帮个小忙用两款数据维护软件DiskGenius EasyRecovery帮其恢复 这两个软件结合使用
  • python自定义标识符_python自定义异常

    python自定义异常 try 异常在try块里抛 如果会产生多个异常 捕捉第一个 匹配except 后边的不再捕捉 except 抓异常 else try无异常 才会执行else finally 无论try块是否抛异常 永远执行的代码 通
  • ZYNQ产品生产拷机问题思考

    目前设计的ZYNQ产品支持QSPIFLASH SDka EMMC启动 主要启动方式主要有以下几种 全部启动文件存放在QSPIFLASH ZYNQ支持的QSPIFLASH为16MB大小 如果UBOOT 内核 设备树 文件系统全部存放在QSPI
  • 爬虫破解js加密破解(二) 有道词典js加密参数 sign破解

    在爬虫过程中 经常给服务器造成压力 比如耗尽CPU 内存 带宽等 为了减少不必要的访问 比如爬虫 网页开发者就发明了反爬虫技术 常见的反爬虫技术有封ip user agent 字体库 js加密 验证码 字符验证码 滑动验证码 点触式验证码等