在爬虫过程中,经常给服务器造成压力(比如耗尽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破解相关推荐

  1. 爬虫-反爬二:有道词典js加密

    文章目录 絮叨一下 分析 开撸 1.查找js 2.分析js 3. 写代码 4.封装请求头 5.提取数据 6.整合 写给看到最后的你 絮叨一下 前个爬了boss直聘,感觉这些大网站的反爬总是有办法安排的 ...

  2. python有道字典_Linux下自制有道词典 - python 解密有道词典JS加密

    对于爬虫新手来说,JS解密是一道过不去的坎,需要不断地练习. 平时在linux下开发,鉴于没有什么好用翻译软件,打开网易也占用系统资源,所以写了个在控制台的翻译软件接口. 使用python爬虫,查看网 ...

  3. JS生成条形码/二维码 barcode.js、JsBarcode

    JS生成条形码/二维码 barcode.JsBarcode JsBarcode Barcode.js 以下代码均非纯原创.新手小白.网上一搜一大把的概念也不写了,直接上可运行的代码及遇到的小坑. Js ...

  4. Python之爬虫-- js加密(破解有道词典加密的算法)

    js加密 有的反爬虫策略采用js对需要传输的数据进行加密处理(通常是取md5值) 经过加密,传输的就是密文,但是 加密函数或者过程一定是在浏览器完成,也就是一定会把代码(js代码)暴露给使用者 通过阅 ...

  5. python爬虫 破解js加密有道词典案列的两种方式以及思路总结

    代码在后面 思路1总结 抓包找到这四个加密参数 'salt': salt, 'sign': sign, 'ts': ts, 'bv': bv, 得到四个值(涉及到js中 MD5, 时间戳. 随机数等) ...

  6. python爬虫之SSL、加密、破解有道词典加密算法并编写有道词典实时翻译

    1.SSL -SSL证书就是指遵守SSL安全套阶层协议的服务器数字证书(SercureSocketLayer) -美国王景公司开发 -CA(CertifacateAuthority)是数字证书认证中心 ...

  7. python爬虫二十四:js逆向破解(一)

    1.环境搭建 通过python代码模拟js去生成加密数据完成数据破解,需要用到PyExecJS模块 ①安装模块pip install pyexecjs通过模块的方法来读取js代码,也可以用js2py( ...

  8. 使用python对在线网易有道翻译接口进行分析及破解js加密

    文章目录 项目目标 温馨提示 项目分析 分析完毕,进行代码模拟加密过程,代码演示 项目目标 对网易有道翻译接口关键参数进行分析,并且进行js加密破解,实质上就是找出网易有道翻译接口对关键参数的加密的详 ...

  9. 破解有道翻译js加密,纯小白练手

    有道翻译js解析 第一次在csdn上发技术贴,以前都是在印象笔记,主要是最近闲的,太无聊了. 作为开始,想找一个超级简单的,然后循序渐进(比较有仪式感). 想起来当初学爬虫的时候,看韦世东的<P ...

最新文章

  1. 为你的水晶报表装载本地图片
  2. 使用yum安装gitlab
  3. 判断数组对象里面的某个属性全部为true才执行下一步操作
  4. mybatis @sqlprovider
  5. 计算机架构专业排名,全国大学计算机专业排名(转贴)
  6. 交华为换机access配置_华为交换机Hybrid接口及基础配置
  7. office教程:教你Excel 怎么样使用信息函数
  8. centos7下的elasticsearch-6.2.4安装
  9. (转)GitHub 被微软收购后的 52 天,改版并放弃了 jQuery!
  10. ASP.NET MVC传递Model到视图的多种方式之通用方式的使用
  11. ps蒙版上渐变工具的使用及抠图方法
  12. 管理小故事100例1
  13. gis 数据框裁剪_【计算摄影】计算机如何学会自动裁剪图片(自动构图)?
  14. 渔翁、魔鬼和四色鱼的故事
  15. 微信官宣:一大波 2022 新年红包封面来了,这波太秀了!!
  16. 【UVM基础】仿真时间与运行时间
  17. tf.gather_nd用法详解
  18. sublime用浏览器打开方法
  19. 【超详细】计算机操作系统总结及思维导图(汤子瀛版)
  20. 10. GridView控件的简单介绍

热门文章

  1. bilibili-网易公开课
  2. Urban Radiance Fields
  3. iOS 苹果开发者注册 和 App Store问题咨询
  4. Web前端-html页面-01(锚点、表单、个人简历)
  5. 许鞍华新片《七里地》催泪 网友:看完想回家过年
  6. python sql_pandasql:让python讲SQL
  7. 共轭对称序列和共轭反对称序列
  8. linu修改open files无效_不越狱修改运动步数,安卓苹果手机通用
  9. 办公网建设设备选型及报价参考(500人规模)
  10. 武器篇-1.摔炮(算不上武器原理可以推广到武器)//2021-1-26