欢迎光临
我一直在努力开车

【福利】教你解析91porn,轻松下载9999+小视频

提前说:本文仅提供思路,,不提供网址,不提供代码,更不提供视频

在座的观众应该都知道一个大名鼎鼎的网站:91下载..91porn,因为91porn不是一次两次在CCTV上镜

当你打开91porn的页面时,即使你是个不足18岁的少年,你也会情不自禁的撒谎(我已年满18岁

【福利】教你解析91porn,轻松下载9999+小视频

上过91porn的老司机也知道,91porn限制了每日观看量,超过10次就不能看了。

之前写过91porn爬虫的技术宅男当然可以破解这个难题。

但是近期91porn对网站进行了反爬虫升级,之前视频链接都是直接在源码中展示了,但是现在已经对<video></video>标签进行了加密,这也导致了目前大部分的91porn爬虫都失效了。

加密后的video标签

加密后的video标签

这里就来说说怎么破解91porn的加密

首先来看看strencode函数,找找加载的js内容,就能找到strencode函数在js/md5.js,看看md5.js的内容:

md5.js内容

emmm….混淆的js代码,用jsnice反混淆一下看看:

jsnice反混淆结果

js的可读性比之前强了,但是仍然不够,这时候如果你要开始动手,那么有3个选择:

  1. 继续手工替换混淆的名词,直到可读性perfect,然后再用Python重写这个strencode函数;
  2. selenium直接访问网址,获取视频
  3. 直接用PyV8/pyexecjs等库去执行strencode函数。

Abbey对JavaScript反混淆/反加密没有太多了解,如果是简单的反混淆,Abbey会尝试去用Python重写,但是这个就算了,因此第一种方法pass

selenium?Abbey一直觉得用selenium写爬虫是件很蠢的事情,太重、太慢了~Abbey可能只会用selenium获取cookies,然后传给requests用,因此第二种方法pass

Abbey最终选择的是第三种方法,使用PyExecjs类库直接执行strencode函数。

PyExecjs库

安装PyExecjs

windows在cmd,linux在shell下运行:

pip install PyExcejs

PyExecjs使用

>>> import execjs
>>> execjs.eval('"one two three".split(" ")') #运行函数/方法
[u'one', u'two', u'three']
>>> ctx=execjs.compile("""
...     function add_f(num1,num2){
...         return num1+num2
...     }
... """)
>>> ctx.call('add_f','1','2')
u'12'
>>> ctx.call('add_f',1,2)
3

瞧?使用PyExecjs运行js多简单

更多PyExecjs的使用,可查看官方Github

PyExecjs破解91porn加密

上面已经说了PyExecjs的使用,破解91porn的加密就很简单了,无非就是从源码中拿到strencode的参数,然后用PyExcejs调用strencode函数,将获取到的参数传入进去即可得到解密后的video标签内容

【福利】教你解析91porn,轻松下载9999+小视频

需要说明的是:91porn你可能拿到3个参数,但是实际上只有前两个参数是有用的,因此只拿前两个参数并传入即可。

尾声

思路已经提供,有能力的就自己写爬虫吧

赞(8)
未经允许不得转载:一个人的公交 » 【福利】教你解析91porn,轻松下载9999+小视频

评论 3

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    你好,使用你提供的方法,我确实得到了真实的网址,但是所有的网址打开都是同一个视频,请问一下你遇到过这样的情况吗?还是说是是十位数的时间参数的问题,我使用time.time()引进真正的时间的话网址便不能找到,能帮我看看是什么原因吗?

    yysscc 1周前 (06-10) 这家伙可能用了美佬的代理 谷歌浏览器 Windows 10 回复
  2. #2

    给力!

    SSR 1周前 (06-12) 这家伙可能用了美佬的代理 谷歌浏览器 Windows 10 回复

Onedrive个人网盘搭建

GitHub地址联系Abbey