js 加密

  • 有的反爬虫策略采用js对需要传输的数据进行加密处理(通常是取md5值)
  • 经过加密,传输的就是密文,但是加密函数或者过程一定是在浏览器完成,也就是一定会把代码(js代码)暴露给使用者
  • 通过阅读加密算法,就可以模拟出加密过程,从而达到破解
  • 破解有道词典

1、分析有道翻译页面

  • 用谷歌浏览器打开有道翻译http://fanyi.youdao.com/
  • 使用开发者工具查看翻译请求信息,包括headers,data,URL等信息
  • data信息
  • 发现data心中存在salt和sign分析为js加密

2、获取有道翻译js源码

-截取部分加密算法 全部源码信息请查看:https://github.com/hongjieWang/python-Splder/blob/master/cn/org/whj/Splder/js.js

var n = e("./jquery-1.7");e("./md5");e("./utils");var r = null;t.asyRequest = function (e) {var t = e.i,i = "" + ((new Date).getTime() + parseInt(10 * Math.random(), 10)),o = n.md5("fanyideskweb" + t + i + "ebSeFb%=XZ%T[KZ)c(sy!");r && r.abort(), r = n.ajax({type: "POST",contentType: "application/x-www-form-urlencoded; charset=UTF-8",url: "/bbk/translate_m.do",data: {i: e.i,client: "fanyideskweb",salt: i,sign: o,tgt: e.tgt,from: e.from,to: e.to,doctype: "json",version: "3.0",cache: !0},dataType: "json",success: function (t) {t && 0 == t.errorCode ? e.success && e.success(t) : e.error && e.error(t)}, error: function (e) {}})}

3、python实现反扒

# -*- coding:utf-8 -*-
'''
破解有道词典
'''import time, random, hashlib
from urllib import request, error, parse# 由js源码可知 salt 算法
# i = "" + ((new Date).getTime() + parseInt(10 * Math.random(), 10)),
# 翻译成python实现
from urllib.request import Requestdef getSalt():# time.time()单位为s ,(new Date).getTime() 单位毫秒salt = int(time.time() * 1000) + random.randint(0, 10)return saltdef getMD5(key):md5 = hashlib.md5()md5.update(key.encode("utf-8"))sign2 = md5.hexdigest()return sign2# 获取sign
# o = n.md5("fanyideskweb" + t + i + "ebSeFb%=XZ%T[KZ)c(sy!");
def getSign(v, salt):sign2 = "fanyideskweb" + v + str(salt) + "ebSeFb%=XZ%T[KZ)c(sy!"sign2 = getMD5(sign2)return sign2def getPost(value):# 有道云URLurl = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"salt = getSalt()# 请求datadata = {"i": value,"from": "AUTO","to": "AUTO","smartresult": "dict","client": "fanyideskweb","salt": str(salt),"sign": getSign(value, salt),"doctype": "json","version": "2.1","keyfrom": "fanyi.web","action": "FY_BY_REALTIME","typoResult": "false"}# 参数data需要是bytes格式 否则报 a bytes-like object is required, not 'str'data = parse.urlencode(data).encode()# headersheaders = {"Accept": "application/json,text/javascript, */*;q=0.01","Accept-Language": "zh-CN,zh;q=0.9","Connection": "keep-alive","Content-Length": len(data),"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8","Cookie": "NTES_SESS=aicZo3tvJTD_jFRCW4QvC8bbDCW3W3aQM9Jes2H3KK8Y490e4zw3CZBxznQzS9RbDFA7vo3QZnaBGtI2vicJGmtaMdzEYzWPy3fSVsTXv24Sy6DoC94zuxGUTXphXINq0329Jo78wmfxVtEcVOubxoWE8JGWrgdPJTp8XMEgK5rofjBxstkOUcLcXP6Qpi44AhIZkrclPQ564bjt3M5yz3S8g; ANTICSRF=9cd36a130117688b76eec98667b81e42; S_INFO=1533824632|0|3&80##|julywhj; P_INFO=julywhj@163.com|1533824632|0|other|11&12|bej&1533811267&other#bej&null#10#0#0|182068&0||julywhj@163.com; OUTFOX_SEARCH_USER_ID=-622851639@10.168.8.76; JSESSIONID=aaaeegEGe2AL2hCez7Nuw; OUTFOX_SEARCH_USER_ID_NCOO=288396918.7876193; ___rl__test__cookies=1533977025972","Host": "fanyi.youdao.com","Origin": "http://fanyi.youdao.com","Referer": "http://fanyi.youdao.com/","User-Agent": " Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36","X-Requested-With": "XMLHttpRequest"}try:req: Request = request.Request(url=url, data=data, headers=headers)rsp = request.urlopen(req)html = rsp.read().decode()print(html)except error.HTTPError as e:print("HttpError: {0} ".format(e.reason))print("HttpError: {0} ".format(e))except error.URLError as e:print("URLError: {0} ".format(e.reason))print("URLError: {0} ".format(e))except Exception as e:print(e)if __name__ == '__main__':getPost('eat')

查看翻译效果



- 因时间匆忙,返回html没有进行格式化,忘大家见谅
- 原码地址:https://github.com/hongjieWang/python-Splder/blob/master/cn/org/whj/Splder/v11.py

反爬虫 破解js加密-有道翻译相关推荐

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

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

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

    在爬虫过程中,经常给服务器造成压力(比如耗尽CPU,内存,带宽等),为了减少不必要的访问(比如爬虫),网页开发者就发明了反爬虫技术. 常见的反爬虫技术有封ip,user_agent,字体库,js加密, ...

  3. 反爬虫的简单实现-有道翻译

    有道翻译的网址:http://fanyi.youdao.com/ 因为有道翻译在不断的做反爬,我今天可以这样做,或许明天就不可以了,所以大家了解思路就可以了,对以后出来的东西有一个解决的思路就可以了! ...

  4. python爬虫--破解js加密:kankan登录破解

    这一系列文章旨在解决python 爬虫过程中遇到的各种反爬,从简单到复制,是个进阶的过程.如果对你有帮助,欢迎关注. 今天要破解的网站是天天看看(http://www.kankan.com/)的登录, ...

  5. python爬虫处理js混淆加密_Python爬虫—破解JS加密的Cookie

    專 欄 ❈Jerry,Python中文社区专栏作者. blog:https://my.oschina.net/jhao104/blog github:https://github.com/jhao10 ...

  6. Python爬虫:爬取instagram,破解js加密参数

    Python爬虫:爬取instagram,破解js加密参数 instagram 是国外非常流行的一款社交网站,类似的还有像facebook.twitter,这些社交网站对于掌握时事热点.电商数据来源和 ...

  7. 破解js加密反爬综述

    破解js加密反爬综述 微信公众号:在敲代码啦 闲谈 上周发懒,没有更贴.结果一个小伙伴居然私我希望我周更帖,这个消息对我来说是莫大的鼓励.总是胡说八道的我居然得到了小伙伴的认可,这足以让我嘚瑟一整子. ...

  8. 【爬虫逆向案例】某道翻译js逆向—— sign解密

    声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! [爬虫逆向案例]某道翻译js逆向-- sign解密 1.前言 2.步骤 3.源码 4.号外 1.前言 相信各位小伙 ...

  9. 当Python爬虫遇到JS加密

    我们在做python爬虫的时候经常会遇到许多的反爬措施,js加密就是其中一种. 破解js加密的方法也有很多种: 1.直接驱动浏览器抓取数据,无视js加密. 2.找到本地加密的js代码,使用python ...

最新文章

  1. .net 调用 sql server 自定义函数,并输出返回值
  2. HDU 4548 美素数 素数题解
  3. 从源码角度看Spark on yarn client cluster模式的本质区别
  4. Pandas知识点-Series数据结构介绍
  5. SAP License:雾里看花系列——做管理还要懂SAP吗?
  6. 通过request读取所有参数
  7. UITableView自定义Section
  8. 第一节:用Cube学32之简单IO口操作(点灯及按键)
  9. 「leetcode」93.复原IP地址【回溯算法】详解!
  10. 第一节:分布式文件系统(DFS,Distributed File System)
  11. 编码表(ASCII码GB2312gbkunicodeUTF-8)
  12. 2022危险化学品经营单位主要负责人考试模拟100题及模拟考试
  13. 部署python爬虫_爬虫项目部署
  14. delphi 人脸比对_比较好的开源人脸识别软件有哪些?
  15. [词性] 四、形容词
  16. VINS-Mono代码阅读笔记(十三):posegraph中四自由度位姿优化
  17. 三菱模拟量fx3u4da_三菱模拟量输入模块FX3U-4AD与FX3U-4AD-ADP的区别
  18. python基于flask_sockets实现WebSocket——叁
  19. Netty游戏服务器实战开发(11):Spring+mybatis 手写分库分表策略(续)
  20. Dialog中显示倒计时,到时自己主动关闭

热门文章

  1. OCR之论文笔记TrOCR
  2. Study day1
  3. 三只小猪-初遇大灰狼
  4. 基于51单片机4路抢答器
  5. 封锁ppstream,pplive,qqlive
  6. day01 - jQuery
  7. 中国雾霾 China smog_ Sky dark from air pollution
  8. 初中计算机会考不及格,初中会考不及格影响报考高中吗
  9. Fri Jun 26 00:00:00 CST 2020时间格式转换成yyyy-MM-dd时间(java)
  10. 海外高防CDN有哪些优势