爬虫破解js加密破解(二) 有道词典js加密参数 sign破解
在爬虫过程中,经常给服务器造成压力(比如耗尽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 requestsimport time, randomimport requestssession = requests.session() ts = str(int((time.time()*1000)))salt = str(ts) + str(random.randint(0, 10)) print tsprint 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
爬虫破解js加密破解(二) 有道词典js加密参数 sign破解相关推荐
- 爬虫-反爬二:有道词典js加密
文章目录 絮叨一下 分析 开撸 1.查找js 2.分析js 3. 写代码 4.封装请求头 5.提取数据 6.整合 写给看到最后的你 絮叨一下 前个爬了boss直聘,感觉这些大网站的反爬总是有办法安排的 ...
- python有道字典_Linux下自制有道词典 - python 解密有道词典JS加密
对于爬虫新手来说,JS解密是一道过不去的坎,需要不断地练习. 平时在linux下开发,鉴于没有什么好用翻译软件,打开网易也占用系统资源,所以写了个在控制台的翻译软件接口. 使用python爬虫,查看网 ...
- JS生成条形码/二维码 barcode.js、JsBarcode
JS生成条形码/二维码 barcode.JsBarcode JsBarcode Barcode.js 以下代码均非纯原创.新手小白.网上一搜一大把的概念也不写了,直接上可运行的代码及遇到的小坑. Js ...
- Python之爬虫-- js加密(破解有道词典加密的算法)
js加密 有的反爬虫策略采用js对需要传输的数据进行加密处理(通常是取md5值) 经过加密,传输的就是密文,但是 加密函数或者过程一定是在浏览器完成,也就是一定会把代码(js代码)暴露给使用者 通过阅 ...
- python爬虫 破解js加密有道词典案列的两种方式以及思路总结
代码在后面 思路1总结 抓包找到这四个加密参数 'salt': salt, 'sign': sign, 'ts': ts, 'bv': bv, 得到四个值(涉及到js中 MD5, 时间戳. 随机数等) ...
- python爬虫之SSL、加密、破解有道词典加密算法并编写有道词典实时翻译
1.SSL -SSL证书就是指遵守SSL安全套阶层协议的服务器数字证书(SercureSocketLayer) -美国王景公司开发 -CA(CertifacateAuthority)是数字证书认证中心 ...
- python爬虫二十四:js逆向破解(一)
1.环境搭建 通过python代码模拟js去生成加密数据完成数据破解,需要用到PyExecJS模块 ①安装模块pip install pyexecjs通过模块的方法来读取js代码,也可以用js2py( ...
- 使用python对在线网易有道翻译接口进行分析及破解js加密
文章目录 项目目标 温馨提示 项目分析 分析完毕,进行代码模拟加密过程,代码演示 项目目标 对网易有道翻译接口关键参数进行分析,并且进行js加密破解,实质上就是找出网易有道翻译接口对关键参数的加密的详 ...
- 破解有道翻译js加密,纯小白练手
有道翻译js解析 第一次在csdn上发技术贴,以前都是在印象笔记,主要是最近闲的,太无聊了. 作为开始,想找一个超级简单的,然后循序渐进(比较有仪式感). 想起来当初学爬虫的时候,看韦世东的<P ...
最新文章
- 为你的水晶报表装载本地图片
- 使用yum安装gitlab
- 判断数组对象里面的某个属性全部为true才执行下一步操作
- mybatis @sqlprovider
- 计算机架构专业排名,全国大学计算机专业排名(转贴)
- 交华为换机access配置_华为交换机Hybrid接口及基础配置
- office教程:教你Excel 怎么样使用信息函数
- centos7下的elasticsearch-6.2.4安装
- (转)GitHub 被微软收购后的 52 天,改版并放弃了 jQuery!
- ASP.NET MVC传递Model到视图的多种方式之通用方式的使用
- ps蒙版上渐变工具的使用及抠图方法
- 管理小故事100例1
- gis 数据框裁剪_【计算摄影】计算机如何学会自动裁剪图片(自动构图)?
- 渔翁、魔鬼和四色鱼的故事
- 微信官宣:一大波 2022 新年红包封面来了,这波太秀了!!
- 【UVM基础】仿真时间与运行时间
- tf.gather_nd用法详解
- sublime用浏览器打开方法
- 【超详细】计算机操作系统总结及思维导图(汤子瀛版)
- 10. GridView控件的简单介绍