最近业务上有个需求,主要就是要获取发票原件
这里我们可以通过正则得到发票下载连接。
我们先直接仿造一个ua来获取连接,得到的结果是
由于该接口的并发量并不高,虽然无头浏览器性能不好,但是还是选择使用无头浏览器,省事。
用浏览器打开链接,显示如下
看下下载发票按钮的源代码
<div class="oper-btns">
<a class="downInvoice">下载发票</a>
<!---->
</div>
发现是一个方法,而不是pdf的地址,这样我们只能去看js的源代码
可以看到,只是简单的执行了下window.open,而url还要继续看别的函数。既然使用了无头浏览器,那我也就不继续用js逆向破解了。
目前的思路是通过无头浏览器,点击按钮,会打开新的标签页,地址就是pdf地址,我们获取地址就好了。
写好测试代码
在我的mac下执行没问题,然后丢到linux里执行,坑来了。
先看执行结果
第一个坑:
在linux里设置headless为false,会报错,查了很多资料,github.com/snobu/destr…
目前还没找到能运行的办法
现在我们设置headless为true,再运行一遍
第二个坑来了
因为我们需要进行windos.open的操作,必须要设置headless为false。
就在我想放弃的时候,我突然想到既然数据是js计算的,那么去local storage看看会不会有想要的数据。看了下,竟然还真的有。
下面最后一步就是通过代码从local storage中获取数据了,既然能获取cookie,那么local storage的数据肯定也能获取。
里面就包括了pdf的地址,我们想要的数据就能拿到了。
第二次正经写文章,我知道写的不够好,也挺乱的。但是如果以后有人搜索,诺诺网发票爬虫的时候,希望这篇文章能对你有帮助。