审计师在审计项目中经常会查询大量的外部信息,如发函快递跟踪、发函地址的核对、工商信息的查询、汇率、海关信息的查询等等。而利用ExcelVBA可以制作批量查询的工具 目前该信息批量查询瑞士军刀包含的功能有:
- 快递批量查询。
- 工商信息批量查询。(包括公司主要高管、股东、资本结构)
- 往来函证地址验证。
- 身份证查询。
- 历史股价查询。
- 专利查询。
- 历史汇率查询。
- 海关单号查询。
- 目录功能。 (excel文件工程密码: tujiabing81)
在IPO审计的时候,需要查询主要供应商、主要客户的工商信息。当供应商、客户比较多的时候,这个工作量比较大。我们可以利用这个工具批量查询工商信息。 图4-1
如图4-1所示,将你需要查询的所有公司粘贴到B列后,左键单击“查询”按钮。本页会出现简要的工商信息。同时如图4-2所示“高管批量查询”表中会查询出公司的主要高管,如图4-3所示, “股东批量查询”表中会查询出公司的股东、认缴出资额、实缴出资额、持股比例。 请注意每次查询最好20个,太多会被网站封IP,如果你查询数量比较多,可以分工几个人查,或者隔几分钟查,不要太贪心。当然,也可以在网抓代码中修改成IP代理服务器地址。 图4-2 图4-3
当然如果你只查一个家公司,如图4-4所示可以在"单个公司工商信息查询"表里查询,所有信息都在一张表里。 图4-4
审计师在验证公司提供的发函地址是否真实的时候,一般会先查询到发函单位的工商注册地址或者办公地址,然后观察两个地址是否相符,如果肉眼难以判断两个地址是否相同的情况下,可能会通过百度地图来进行对比。而对于少则几十封函证,多则几百封函证的工作量,很难利用手工完成。在如此紧张的审计现场中,这项工作基本流于形式。 在第一个年报后,笔者构建了一个核对思路。首先,通过网抓批量获取到发函公司的工商注册地址。如果将查询地址和公司提供地址仅依靠文本相似性来核对的话,是十分不准确的,因此,我想到的是计算两个地址的距离,如果距离很近(比如五公里),那么就认为这个地址没有问题。
如图4-5所示,将函证的公司名称和被审计单位提供的地址粘贴到D:E列,左键单击“查询地址”按钮,电脑会自动爬取“信用中国”网站中公司的工商注册地址。这个过程瞬间完成,相比手工去查快了很多。有了两个地址后,我们左键单击“计算距离"按钮,这个时候电脑会调用百度地图的API将两个地址上传,百度地图的服务器计算完成后返回距离值,如图4-6所示。 图4-6
如果超过了5公里(可以自己设定一个阈值),会提示“警告”,需要审计师再人工核对一下。毕竟不是所有公司的地址都是注册地址。由于该百度API是笔者自己申请的账号,每日调用次数使用有限,如果以后这个超过了单日调用限制,读者可以自行在百度申请,申请后会提供一个AK码,将VBA网抓代码中的AK码替换就可以了。
有时审计师发函的单位可能并不是公司而是品牌的门店。这样我们并不能获取到工商注册地址,只能通过百度地图输入公司提供的发函地址,查找附近是否有该品牌的门店。当人工这样核对的数量一多,又是一个巨大的工程。因此,笔者利用百度地图提供的POI数据搜索技术,以公司提供的发函地址为定位点,搜索附近圆形区域内最近的该品牌门店地址,再对两个地址的距离进行计算。 笔者公司楼下旁边有家“花溪牛肉粉”的店铺,我们经常在那里吃饭。如图4-7所示,这里以笔者公司地址作为发函地址,以“花溪牛肉粉”为查询关键字,设置“附近范围”1000米,设置“预警距离阈值”为1公里。左键单击“查询门店”按钮,会显示出在百度地图中查询出的最近的地址,门店的名称,门店地址与发函地址的距离,如果超出设定的阈值会在最后一列显示“警告”。 图4-7
如图4-8所示,在B列粘贴上快递单号,在C列的下拉框中选择快递公司,左键单击“快递查询”按钮,电脑会自动调用“快递100"接口,返回查询数据(顺丰不能通过快递100查询)。当一次性查询太多的时候,这个接口可能会不能使用,因为很多网站对于适时间大量访问的IP地址会视为爬虫,从而限制访问。解决的办法就是利用代理IP服务器更改IP地址。首先,我们可以在网上找一些免费的代理IP, 例如网站 https://www.xicidaili.com/ 提供了一些免费IP。如图4-9所示,在“HTTPS代理IP”栏目下找到IP地址和端口号,116.208.52.77:9999填写到“F1”单元格中。如果F1单元格未填写代理IP,就还是正常使用的你电脑所在的IP地址。当然,网站中有一些IP是不能使用的,所以需要尝试下,或者在CMD中Ping一下IP地址,看是否是可用的。
图4-9 信息查询瑞士军刀中很多工具都会遇到这个查询过多后适时间内不能查询的问题,可以利用第三单讲的SetProxy语句添加到代码中,使用代理IP地址。
有时我们会想看企业给的花名册中是否有虚构员工,那么通过身份证信息批量查询可以佐证。
有外币账户的企业,我们会查询每个月末的汇率,而通常我们会去中国人民银行官网去查询,查询多个时点的值会显得特别麻烦。因此笔者制作了支持中国人民银行官网的24种币种的查询工具。如图4-11所示,在“B2"单元格填写对应的数字(例如:查询美元,就填写数字1),左键单击“查询”按钮,电脑会自动爬取中国人民银行官网的数据。
图4-11
企业有金融资产的时候(例如:股票),我们会去查询股票对应二级市场的股价。如图4-12所示,我们仅需要填写“股票代码”,“起始日”,“截止日”三个参数,再左键单击“历史股价查询”按钮,电脑会自动爬取股价的历史数据。数据来源:搜狐股票。 图4-12
图4-13 对于有海外市场的企业,我们在海关信息网查海关单号,尤其会关注截止性。如图4-14所示,在B列粘贴好报关单号后,左键单击“海关查询”按钮,抓取海关信息网报关单历史环节信息。 图4-14
由于快递100的API不能查询顺丰快递。而且顺丰官网的网抓太难还网站经常变动。因此笔者这里用顺丰微信公众号抓包分析做的爬虫。但是微信公众号的网页生成的cookie(理解为通行证)会每隔几个小时变化,之前的会失效,所以这个顺丰查询的使用需要搭配抓包工具Fiddle,获取cookie值。但是并不复杂,下面笔者详细讲讲使用方法。查询界面如图4-15所示: 图4-15 填写好快递单号和Cookie值后,左键单击“顺丰查询”按钮。可以查到的信息包含了”签收状态“,“寄件人",”寄件人电话“,”寄件地址“,”揽件营业部“,”收件人“,"收件人电话”,“收件地址”,“送件营运部”。
获取cookie值 这里我们要用到一个网络抓包工具:Fiddle4。
-
首先,安装fiddle4(读者可以在官网下载)后,使其在“Capturing”的状态下。
-
然后,登陆电脑版微信(如果读者电脑没有安装,请自行下载安装一次,不要用网页版微信)。打开顺丰速运的公众号,左键单击“查快递”,如图4-16所示,任意选择一个单号进入。 图4-16 随便选择其中的文本信息,例如,这里我选择发件人“林铖”,复制。
-
打开fiddle4软件,如图4-17所示,按Ctrl+F查找,在“find”框后粘贴刚才我们复制的文本“林铖”,左键单击“find sessions"按钮。我们看到软件左边一堆网址中有一个标黄的,左键单击它。在右上方的Request框中,左键单击“RAW”,就可以看到Cookie信息。 图4-17
-
我们只需要把Cookie值拷贝到图4-15中“F1”单元格后,左键单击“顺丰查询”按钮就可以批量查询了。Cookie值大概能一个多小时有效,所以,最好是积累几十上百的函证单号再批量查询。这里需要注意的是,对于通过你手机微信公众号的下单的顺丰所有信息能完全显示。对于别人的快递单号,只能查询到快递状态、和揽件营业部、送件营业部信息。
由于“信息查询瑞士军刀”的工作表较多,因此在第一张工作表有“目录”工作表,如图4-18所示,左键双击对应工作表的序号或表名会自动跳转到对应工作表,同时在任意工作表左键双击A1单元格,会自动跳转回目录工作表。如果读者将工作表名进行了修改,需要生成新的目录,可以在“目录”工作表中左键双击B1单元格,会自动刷新生成新的目录。 图4-18