除了一些类似字体反爬之类的奇淫技巧,js加密应该是反爬相当常见的一部分了,这也是一个分水岭,我能解决基本js加密的才能算入阶。

最近正好遇到一个比较简单的js,跟大家分享一下迅雷网盘搜索_838888
输入关键字,url变了https://838888.net/search/e8bf9be587bbe79a84e5b7a8e4baba-1-id-s.htm

 

咦~这key有点不对啊,很明显这不是常见的urlEncode编码,这里我也验证一下

In [1]: from urllib import parse

In [2]: parse.quote('进击的巨人',encoding='utf-8')
Out[2]: '%E8%BF%9B%E5%87%BB%E7%9A%84%E5%B7%A8%E4%BA%BA' In [3]: parse.quote('进击的巨人',encoding='gbk')
Out[3]: '%BD%F8%BB%F7%B5%C4%BE%DE%C8%CB'

果然,猜测是某个js动态生成的。选择js,多刷几遍看看:

urlEncode

咦~这个base64有点可疑啊,直接将关键字base64一下

在线base64
 

果然没这么简单,点开看下,,我发现了什么?这个url不就是我们搜索的url吗?

那么这个value也应该是这一串乱七八糟的字符咯,看这个value的生成,拿到id为'search'的值再 utf16to8() 再str2hex() 一哈。
OK,我们也不用很清楚这个utf16to8() 和 str2hex()主要是怎么运行的(当然想试下的可以看前面代码),可以按照它的方法调用然后生成这个url就好,have a try:)
先用js写个生成url的function

function change_url(str){
value = str2hex(utf16to8(str))
return value
}

然后用pyhton来调用

import execjs
file = 'base64.js'
def get_js():
f = open(file, 'r', encoding='UTF-8')
line = f.readline()
htmlstr = ''
while line:
htmlstr = htmlstr + line
line = f.readline()
return htmlstr def get_key(key):
jsstr = Handler.get_js()
ctx = execjs.compile(jsstr)
return ctx.call('change_url',key)

这里用到了execjs这个包来调用js,测一下'进击的巨人',嗯,果然是这一串字符。
破解js是一条艰辛的道路,这篇文章并没有很多高超的技巧,我只是想通过这次实践说明并不是所有的js都是很难的,我们也并不需要很畏惧它,拥有一颗强者的心是很重要的!

python爬虫_从零开始破解js加密(一)的更多相关文章

  1. Python爬虫教程-16-破解js加密实例(有道在线翻译)

    python爬虫教程-16-破解js加密实例(有道在线翻译) 在爬虫爬取网站的时候,经常遇到一些反爬虫技术,比如: 加cookie,身份验证UserAgent 图形验证,还有很难破解的滑动验证 js签 ...

  2. python爬虫-有道翻译-js加密破解

    有道翻译-js加密破解 这是本地爬取的网址:http://fanyi.youdao.com/ 一.分析请求 我们在页面中输入:水果,翻译后的英文就是:fruit.请求携带的参数有很多,先将参数数据保存 ...

  3. Python爬虫—破解JS加密的Cookie

    前言 在GitHub上维护了一个代理池的项目,代理来源是抓取一些免费的代理发布网站.上午有个小哥告诉我说有个代理抓取接口不能用了,返回状态521.抱着帮人解决问题的心态去跑了一遍代码.发现果真是这样. ...

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

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

  5. python爬虫之快速对js内容进行破解

    python爬虫之快速对js内容进行破解 今天介绍下数据被js加密后的破解方法.距离上次发文已经过去半个多月了,我写文章的主要目的是把从其它地方学到的东西做个记录顺便分享给大家,我承认自己是个懒猪.不 ...

  6. Python破解js加密实例(有道在线翻译)

    在爬虫爬取网站的时候,经常遇到一些反爬虫技术,比如: 加cookie,身份验证UserAgent 图形验证,还有很难破解的滑动验证 js签名验证,对传输数据进行加密处理 对于js加密经过加密传输的就是 ...

  7. python爬虫以及后端开发--实用加密模板整理

    都是作者累积的,且看其珍惜,大家可以尽量可以保存一下,如果转载请写好出处https://www.cnblogs.com/pythonywy 一.md5加密 1.简介 这是一种使用非常广泛的加密方式,不 ...

  8. 记第一次破解js加密代码

    首先,我要爬的是这个网站:http://www.66ip.cn/nm.html,我想做个直接调用网站的接口获取代理的爬虫 这个接口看上去似乎很简单,直接输入需要的代理条件后,点击提取即可 点击提取后就 ...

  9. 破解JS加密:url unicode加密而已

    加密所在的地方:http://tool.chinaz.com/Tools/UrlCrypt.aspx?url=www.baidu.com 结果: http://%77%77%77%2E%62%61%6 ...

随机推荐

  1. AcWing 142. 前缀统计 字典树打卡

    给定N个字符串S1,S2…SNS1,S2…SN,接下来进行M次询问,每次询问给定一个字符串T,求S1S1-SNSN中有多少个字符串是T的前缀. 输入字符串的总长度不超过106106,仅包含小写字母. ...

  2. (10)centos7 包管理、远程传文件

    一.RPM red package manager 红帽包管理工具 -q 查询 -a 已安装的所有rpm 1.查询已安装的rpm列表 -qa 查看所有的rpm安装包 rpm -qa | grep py ...

  3. PHP面试 PHP基础知识 十(网络协议)

    网络协议 HTTP协议状态码 状态分为五大类:1XX.2XX.3XX.4XX.5XX 1XX:信息类状态码  表示接受请求正在处理 2XX:success 成功状态码  请求正常处理完毕 3XX:重定 ...

  4. js读取json数据

    { "code": 0, "msg": null, "data": { "pageNum": 1, "page ...

  5. Hyperledger:名词解释

    架构概念: VSCC (Validation System Chaincode) Auditability(审计性):在一定权限和许可下,可以对链上的交易进行审计和检查. Block(区块):代表一批 ...

  6. MySQL 建库建表规范

    1.约束 1.PrimaryKey(PK)主键 特点:唯一 + 非空,一张表中只能有一个主键约束,一般是一个数字列,最好是无意义的. 2.NOT NULL 非空 特点:不能为空,建议在MySQL中,业 ...

  7. docker容器的常见操作

    进入容器 docker exec -it 12a022ee8127 /bin/bash 交互模式进入容器 docker exec -it 12a022ee8127 ip a 查看容器的ip等信息 批量 ...

  8. 调用API接口,查询手机号码归属地(1)

    使用https://www.juhe.cn/提供的接口,查询归属地 在官网注册key即可使用. 代码如下 #!/usr/bin/python # -*- coding: utf-8 -*- impor ...

  9. Linux系统查看局域网的公网ip

    访问http://www.cip.cc即可获得ip 前提是linux系统能够解析域名 [root@Test ~]# curl cip.cc IP : 115.216.41.112 地址 : 中国 浙江 ...

  10. C# Winform DotNetBar控件之StyleManager

    这个控件作用改变窗体样式 使用方法 拖拽一个styleManager到窗体 改变它的managerStyle,再把窗体的继承改成Office2007Form 最后一步窗体初始化控件前 改掉的Enabl ...