提前说:本文仅提供思路,,不提供网址,不提供代码,更不提供视频
在座的观众应该都知道一个大名鼎鼎的网站:91下载..91porn,因为91porn不是一次两次在CCTV上镜
当你打开91porn的页面时,即使你是个不足18岁的少年,你也会情不自禁的撒谎
上过91porn的老司机也知道,91porn限制了每日观看量,超过10次就不能看了。
之前写过91porn爬虫的技术宅男当然可以破解这个难题。
但是近期91porn对网站进行了反爬虫升级,之前视频链接都是直接在源码中展示了,但是现在已经对标签进行了加密,这也导致了目前大部分的91porn爬虫都失效了。
这里就来说说 怎么破解91porn的加密。
首先来看看strencode
函数,找找加载的js内容,就能找到strencode
函数在js/md5.js
,看看md5.js
的内容:
emmm....混淆的js代码,用jsnice反混淆一下看看:
js的可读性比之前强了,但是仍然不够,这时候如果你要开始动手,那么有3个选择:
继续手工替换混淆的名词,直到可读性perfect,然后再用Python重写这个strencode
函数;
用selenium
直接访问网址,获取视频
直接用PyV8
/pyexecjs
等库去执行strencode
函数。
Abbey对JavaScript反混淆/反加密没有太多了解,如果是简单的反混淆,Abbey会尝试去用Python重写,但是这个就算了,因此第一种方法pass
selenium
?Abbey一直觉得用selenium
写爬虫是件很蠢的事情,太重、太慢了~Abbey可能只会用selenium
获取cookies,然后传给requests
用,因此第二种方法pass
Abbey最终选择的是第三种方法,使用PyExecjs
类库直接执行strencode
函数。
windows在cmd,linux在shell下运行:
pip install PyExcejs
>>> import execjs>>> execjs.eval") #运行函数/方法[u"one", u"two", u"three"]>>> ctx=execjs.compile{... return num1+num2... }... """)>>> ctx.callu"12">>> ctx.call3
瞧?使用PyExecjs
运行js多简单
更多PyExecjs的使用,可查看官方Github。
PyExecjs破解91porn加密上面已经说了PyExecjs
的使用,破解91porn的加密就很简单了,无非就是从源码中拿到strencode
的参数,然后用PyExcejs
调用strencode
函数,将获取到的参数传入进去即可得到解密后的video
标签内容
需要说明的是:91porn你可能拿到3个参数,但是实际上只有前两个参数是有用的,因此只拿前两个参数并传入即可。
尾声思路已经提供,有能力的就自己写爬虫吧