自动查企业工商登记信息(企业信用信息公示系统、极验Geetest与Python爬虫)

一、引言:

信贷作业的过程就是信息搜集和验证的过程。对于企业客户,最权威的信息渠道莫过于工商登记信息,各种第三方查询工具(天眼查、启信宝、各种各样的API等等)也来源于此。

常见的问题在于,我们不仅要查借款人,还要查其法人股东(不断追溯),下属企业,以及担保企业、上下游主要交易对手等等。这样,调查一个客户往往要查询七八户企业。如何高效、自动完成查询?如何在查询的同时规范化存储、整理各种信息(而不是胡乱地复制粘贴)?这是本文试图解决的问题。

======================================================================

注意:这里仅为本人信贷工作学习之心得,切勿转载,或用于采集他人信息使用,恶意采集他人信息要承担刑事责任。

======================================================================

二、信贷理论基础:

对于一个企业信贷客户,要查哪些相关企业?参考下面的内容:

H Howard:银行信贷中的「穿透原则」是什么?如何理解?

H Howard:《商业银行集团客户授信业务风险管理指引》中的「集团客户」如何理解,能否举例说明?

三、网站分析

(一)我们先看手工查询流程

打开主页国家企业信用信息公示系统

2、录入关键词查询,这时候会跳出验证码(大名鼎鼎的geetest)

拖动滑块

看到查询结果50条

点开第一条,能看到基本信息,点击不同栏目,可以看到更多信息

点击右上角信息打印,再次跳出验证码

滑动滑块,打印报告

信息非常详尽

(二)技术要点

1、第一步,录入主页,返回两个参数gt,challenge

gt是固定的,challenge会变化

有了两个参数,就可以获取验证码

bg,fullbg代表有缺口和没缺口的背景图地址,slice代表缺块图地址

下面就是背景图

当然,图片经过了混淆处理,需要重新拼图

鼠标拖动验证码的过程,实际上是向网站提交了一串参数,而网站通过校验参数来判断查询者是人类还是机器人。

提交的参数中,gt、challenge已知,userresponse、passtime、a不知道如何来的,我们搜索发现在js文件中出现过(文件版本会不断更新)。

打开js文件:

格式化

找到userresponse、passtime、a的出处:

var p = {

gt:a.config.gt,

challenge: a.config.challenge,

userresponse: ca.ra(l, a.config.challenge),

passtime: Q.t("endTime",a.id).getTime() - Q.t("startTime",a.id),

imgload: Q.t("imgload",a.id),

a: encodeURIComponent(n)

};

要计算userresponse,需要ca.ra,那就继续找:

ca.ra = function(a, b) {

for (var c = b.slice(32), d = [], e = 0; e < c.length; e++) {

var f = c.charCodeAt(e);

d[e] = f > 57 ? f - 87 : f - 48

}

c = 36 * d[0] + d[1];

var g = Math.round(a) + c;

b = b.slice(0, 32);

var h, i = [[], [], [], [], []],

j = {},

k = 0;

e = 0;

for (var l = b.length; e < l; e++) h = b.charAt(e),

j[h] || (j[h] = 1, i[k].push(h), k++, k = 5 == k ? 0 : k);

for (var m, n = g,

o = 4,

p = "",

q = [1, 2, 5, 10, 50]; n > 0;) n - q[o] >= 0 ? (m = parseInt(Math.random() * i[o].length, 10), p += i[o][m], n -= q[o]) : (i.splice(o, 1), q.splice(o, 1), o -= 1);

return p

};

以此类推,需要什么找什么,最后找到参数的计算方法。

最终发现,计算参数需要一串数据,那就是滑块拖动形成的鼠标轨迹,不同人拖动,形成不同的轨迹,计算的到不同的参数值,服务器判断参数值是否合法,进而能否通过验证码。

匀速运动,过快拖动,一次到位的拖动,都会被认为是机器人,出现forbidden。

关于这套验证码系统,可以看官方介绍

产品特性-安全进化、体验优化、管理轻化的验证码

极验(geetest)是颠覆传统字符验证码的的新一代基于行为式验证安全技术的验证码

什么是基于行为呢?想想《碟中谍5》中吊炸天的门禁黑科技

简而言之:既要拖到位,又不能过于准确。

两种思路,一种是笨办法,大量采集人类拖动形成轨迹库,直接调用;另一种思路是寻找人类拖动的规律,运用函数去模拟。

看一个采集到的鼠标轨迹:

{-18,-18,0};{0,0,0};{2,0,273};{3,0,288};{4,0,295};{5,0,304};{6,0,343};{7,0,352};{8,0,367};{9,0,383};{10,0,399};{11,0,408};{12,0,423};{13,0,439};{14,0,456};{15,0,479};{16,0,488};{17,0,505};{18,0,528};{19,-1,536};{20,-1,543};{21,-2,552};{22,-2,575};{23,-2,584};{25,-2,600};{26,-2,615};{27,-2,631};{28,-2,655};{29,-2,663};{30,-2,672};{31,-2,695};{32,-2,711};{33,-2,735};{34,-2,752};{35,-2,767};{36,-2,775};{37,-2,792};{38,-2,817};{39,-2,839};{40,-2,895};{41,-2,911};{42,-2,919};{43,-2,952};{44,-2,976};{45,-2,999};{46,-2,1039};{47,-2,1055};{48,-2,1072};{49,-2,1113};{50,-2,1135};{51,-2,1160};{52,-2,1192};{53,-2,1239};{53,-2,1376};

第一个点,{-18,-18,0}是代表鼠标起始位置(在滑块左边),然后是鼠标移动到滑块最左端{0,0,0},开始向右拖动{3,0,288},最后移动到{53,-2,1376}完成。

轨迹节点[53,-2,1376],53表示水平移动的位置,正数代表向右移动,负数代表向左移动; -2表示鼠标上下偏移(一般为零,比如手抖了,就有正负);1376表示耗用时间。

人类拖动的一般规律:首先是鼠标移动到滑块上,慢慢拖,由慢到快,到了结束时慢慢调整,直至对齐。所以匀速运动肯定被判定为机器人。

找到规律后,可以用一些函数模拟这种“慢-快-慢”的节奏,比如tanh或者常用神经网络的sigmoid函数。

当然,函数还需要增加随机数。一般来说,没必要追求100%的通过率,能到80%就可以用了。

毕竟涉及到商业,这能写到这样了,再细就是代码了。

过了验证码以后,我们拿到了关键参数geetest_validate,再次提交查询

可以在网页源代码中看到基本信息了

查询结果很多条,我们要拿到每一条的详细页面网址

以该网址,再次查询,无需任何参数,直接Get

拿到基本信息

其中,找打打印对应的网址

再过一次验证码,拿到了关键参数geetest_validate,再次提交查询

拿到了详细报告的所有信息

至此,下一步就是写正则表达式,将网页数据以规范的形式保存起来。撰写信贷调查报告、审查报告的时候,直接引用数据,或者可以自动生成调查报告,省去了复制粘贴的过程。

四、自动查询工具

用python实现,两种思路,一种是selenium+phantomjs,优点是上手快,缺点是难以达到工业级运用,另一种要读js文件,自己写计算函数。用到的库,PIL、requests、lxml。

看下效果:

主要信息有了,有些乱,尚未整理。

关于信息整理,正则表达式,以及Txt,Word,Excel之间的自由转换,数据分析、商务图表、尽调报告自动生成等等门面功夫(形式主义的学问)之类的,下次再介绍吧。

工具能用多久?js文件版本一旦更新(或切换验证码系统),工具也需要更新,不然就挂了。当然,这仅用于个人提升工作效率使用,一次查询十来个尚可,大规模采集信息肯定会遇到各种封杀。

验证码系统和信贷风控(特别是反欺诈)有相同之处,都是分类问题,验证码是区分人类或机器,风控是区分好客户与坏客户,既要让好客户感到不麻烦,又要让坏客户进不来,风控太严格,往往误伤好客户,这就是矛盾。我们现在强调科技金融,言必谈大数据、机器学习、数据挖掘、各种风控黑科技,似乎科技可以解决所有问题。然而,正如武器专家Q为007精心打造的古灵精怪的武器装备并不能代替007去自动完成任务,工具可以帮助007找到对手,电影总是以007与敌人首脑之间的的肉搏结局。再强大的风控体系都离不开人的作用。也没有什么一劳永逸的“工具”,风控就是人与人的博弈。

五、信息分析

查询了这些信息,如何分析?有时候走得太远,反而忘记了为什么出发,总想爬更多的信息(陷入各种科技坑),其实拿到信息只是最简单的一步。如何透过各种或真或假的信息挖掘企业的信用与经营状况?名称、地址、注册资本、法定代表人什么法律含义?各种变更有什么潜在的意图?如何挖掘企业的实际控制人?如何判断实际控制人的所思所想?这才是真正的难题。

…更多文章请到信贷风控手记-知乎专栏

…更多回答请看H-Howard

H Howard:在银行从事风险管理是什么样的体验?

H Howard:为什么因为存货积压会导致当期毛利率的提高?

H Howard:国内汽车金融的现状和前景是怎样的?

H Howard:在一笔贷款审批中,有什么措施能在不变更审批条件下,可以不提供资料就判断客户的资质呢?

H Howard:在消费金融公司工作是一种什么样的体验?

H Howard:非金融出身的风险控制应该学哪些方面的专业知识?

H Howard:财务报表分析具体怎么做?

H Howard:信贷的全流程是怎么做的?是否有可能做到较高的自动化?

最近写了本小书,欢迎购买

图片发自简书App
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,517评论 6 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,103评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,574评论 25 707
  • 这是一个关于我的奇葩舍友的故事完整故事请查看目录 不知道从什么时候开始,北京的卖唱队伍里注入了一脉新鲜的血液。 他...
    孤叶南飞阅读 16,868评论 14 4
  • 这是阳阳的第24幅作品,对数学图形部分进行了分析。中心图主要由三角形、平四边形组成。三个分支分别为平行四边形,三角...
    民大铁老师阅读 321评论 5 0