诺诺发票爬虫

494 阅读2分钟

最近业务上有个需求,主要就是要获取发票原件

这里我们可以通过正则得到发票下载连接。

我们先直接仿造一个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的地址,我们想要的数据就能拿到了。

第二次正经写文章,我知道写的不够好,也挺乱的。但是如果以后有人搜索,诺诺网发票爬虫的时候,希望这篇文章能对你有帮助。