近日在爬取某个站点的时候发现,默认必须通过首页跳转才可以访问其内容页,就像这样..
经过使用Chrome调试工具审查Network过程后我们可以发现,在未设置cf_clearance
cookie时,访问将无法进行。
我们可以红框内容看到首次访问返回503
其后通过访问chk_jschi
后触发302
跳转至main并成功响应,并且在绿框中我们可以看到在第二个set-cookie
取到后再次加载main界面成功
通过查看 chk_jschi 响应头我们可以看到其中的set-cookie
内容正是我们所需要的
那么问题来了,这个是请求是怎么生成的呢?此时我们通过搜索蓝框内的键
我们来测试一下如果通过View-source
会返回怎么样的结果,这里要注意要先将cookie清理干净
成功找到相关参数,看起来似乎是没啥问题了。不过有没有注意到jschl_answer
并没有内容 并且存在一个id
属性 这就让我立即想到会通过js将其赋值的可能。
于是根据ID查找,发现了惊喜
那么上面一堆乱七八糟的东西是什么呢。。
或许大部分人并不知道,这就是Jsfuck
也就是说,这些代码是可执行的 我们直接取出部分代码丢入console
非常好,接下来就到了根据JS
转写成python
的过程了,这里我们使用execjs
作为执行模块。
源码地址: https://github.com/aoii103/AntiCloudFare 有需要的同学可自行前往下载。
###测试执行结果
可以看到成功生成了相应的url,这里有一点要注意下,在生成成功后,任然需要等待4秒钟再访问该链接才可以取到对应cookie。所以转写代码能全则全,毕竟用来做摆设的占少数。