/Inv-Veri-Spider

python+selenium实现自动发票验真

Primary LanguagePython

国家税务局发票验真爬虫 python+selenium

背景

最近工作上在研究发票验真的流程,实现自动发票验真,参考了网上的解决方案都没有解决,反而找到了另外的解决思路,所以来分享一下。

解决方案

获取验真截图的过程很顺利,selenium一路模拟输入然后点击查验即可,顺带一提,验证码识别用的是ddddocr,在此感谢这位作者。

但是在提取验真的各项信息时遇到了困难,打开网页控制台F12然后点击查验很容易捕捉到包含发票json信息的get请求,但是它的url经过了加密。网上的做法大多是逆向js,在js文件中打断点去一步步找到每个加密key的加密方式,然后逆向js写进代码里。

无奈自己不大会前端,在这个过程中被弄得一头雾水,在测试的过程中偶然发现查验结果时一个iframe弹窗,也就是这个

示例

而selenium正好可以切换到弹窗,再打印弹窗的page_source,果然包含发票信息。

后面就简单了,将每项发票信息通过xpath定位然后获取即可。

使用方法

安装依赖

`pip install -r requirements.txt`

修改output.xlsx文件

文件格式按我提供的这个来就行,内容自己修改

运行

`python run.py`
生成的验真截图在result目录下,验真发票的数据在result.xlsx里,我里面也给出了两条例子。

常见问题

我关闭了浏览器,可以把chrome_options.add_argument('--headless')注掉来打开浏览器。

这个验证码ocr的准确率很低,所以会导致程序跑的很慢,我也在找更好的验证码ocr,大家有更好的可以换上。