对于发票查验来说,如果有多张发票需要查验,从国税局发票查验网站一张张的输入去查,那么效率就显得太慢了,因此想办法自己写一个接口对接国税局。
查验请求参数分析
在国税局上进行一次发票查验,用通达信网上交易接口,fiddler去抓取请求然后查看通达信网上交易接口,fiddler,如下所示:可以看到发票查验有两个请求,第一个请求为验证码请求,第二个请求为查验请求。验证码请求和查验请求有两个最重要加密参数key9和flwq3破解了这4个加密参数的生成规则,也就代表可以自己写查验接口了。
加密参数的生成
国税局查验网站有反调试手段,当在网页上按F12时,会出现debugger,这种时候需要利用通达信网上交易接口,fiddler进行删掉反调试代码,然后有的js代码混淆了,可以采用反混淆,推荐一个不错的反混淆网站。反混淆注意有的代码需要把正则表达式的判断函数里,把返回的改成true,可以搜素一个js文件RegExp最后利用通达信网上交易接口,fiddler在线替换js文件,从而去掉了反调试。自己的分析如下:
验证码请求的key9函数入口js在eab23.js 搜索key9
发票查验的key9入口点js在90a1c.js中 搜索key9
两个flwq39均在动态js中的beforeSend里 搜素beforeSend
找到函数入口,就可以一点点扣js代码,将其生成规则写出来。
验证码识别
验证码识别的方法详见我的另一篇博客,英文字符的识别率高达999%。通过以上方法,就可以写出自己查验接口了,方便自己更有效率的进行发票查验。
查验的测试
我在自己的阿里云上放了一个自己的查验服务
请求地址:http://47.107.92.103:11001/fpcy
请求类型:post请求
请求参数为json格式:Content-Type: application/json; charset=utf-8
{
'fpdm': '发票代码',
'fphm': '发票号码',
'kprq': '开票日期',
'value': '校验项目',
“sqm”:”授权码”
}
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点