一、引言:
信貸作業(yè)的過程就是信息搜集和驗(yàn)證的過程睡蟋。對(duì)于企業(yè)客戶踏幻,最權(quán)威的信息渠道莫過于工商登記信息,各種第三方查詢工具(天眼查戳杀、啟信寶该面、各種各樣的API等等)也來源于此夭苗。
常見的問題在于,我們不僅要查借款人吆倦,還要查其法人股東(不斷追溯)听诸,下屬企業(yè),以及擔(dān)保企業(yè)蚕泽、上下游主要交易對(duì)手等等晌梨。這樣,調(diào)查一個(gè)客戶往往要查詢七八戶企業(yè)须妻。如何高效仔蝌、自動(dòng)完成查詢?如何在查詢的同時(shí)規(guī)范化存儲(chǔ)荒吏、整理各種信息(而不是胡亂地復(fù)制粘貼)敛惊?這是本文試圖解決的問題。
======================================================================
注意:這里僅為本人信貸工作學(xué)習(xí)之心得绰更,切勿轉(zhuǎn)載瞧挤,或用于采集他人信息使用,惡意采集他人信息要承擔(dān)刑事責(zé)任儡湾。
======================================================================
二特恬、信貸理論基礎(chǔ):
對(duì)于一個(gè)企業(yè)信貸客戶,要查哪些相關(guān)企業(yè)徐钠?參考下面的內(nèi)容:
H Howard:銀行信貸中的「穿透原則」是什么癌刽?如何理解?
H Howard:《商業(yè)銀行集團(tuán)客戶授信業(yè)務(wù)風(fēng)險(xiǎn)管理指引》中的「集團(tuán)客戶」如何理解尝丐,能否舉例說明显拜?
三、網(wǎng)站分析
(一)我們先看手工查詢流程
打開主頁國(guó)家企業(yè)信用信息公示系統(tǒng)
2爹袁、錄入關(guān)鍵詞查詢远荠,這時(shí)候會(huì)跳出驗(yàn)證碼(大名鼎鼎的geetest)
拖動(dòng)滑塊
看到查詢結(jié)果50條
點(diǎn)開第一條,能看到基本信息失息,點(diǎn)擊不同欄目矮台,可以看到更多信息
點(diǎn)擊右上角信息打印,再次跳出驗(yàn)證碼
滑動(dòng)滑塊根时,打印報(bào)告
信息非常詳盡
(二)技術(shù)要點(diǎn)
1瘦赫、第一步,錄入主頁蛤迎,返回兩個(gè)參數(shù)gt,challenge
gt是固定的,challenge會(huì)變化
有了兩個(gè)參數(shù)确虱,就可以獲取驗(yàn)證碼
bg,fullbg代表有缺口和沒缺口的背景圖地址,slice代表缺塊圖地址
下面就是背景圖
當(dāng)然替裆,圖片經(jīng)過了混淆處理校辩,需要重新拼圖
鼠標(biāo)拖動(dòng)驗(yàn)證碼的過程窘问,實(shí)際上是向網(wǎng)站提交了一串參數(shù),而網(wǎng)站通過校驗(yàn)參數(shù)來判斷查詢者是人類還是機(jī)器人宜咒。
提交的參數(shù)中惠赫,gt、challenge已知故黑,userresponse儿咱、passtime、a不知道如何來的场晶,我們搜索發(fā)現(xiàn)在js文件中出現(xiàn)過(文件版本會(huì)不斷更新)混埠。
打開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)
};
要計(jì)算userresponse钳宪,需要ca.ra,那就繼續(xù)找:
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
};
以此類推扳炬,需要什么找什么吏颖,最后找到參數(shù)的計(jì)算方法。
最終發(fā)現(xiàn)恨樟,計(jì)算參數(shù)需要一串?dāng)?shù)據(jù)半醉,那就是滑塊拖動(dòng)形成的鼠標(biāo)軌跡,不同人拖動(dòng)厌杜,形成不同的軌跡,計(jì)算的到不同的參數(shù)值计螺,服務(wù)器判斷參數(shù)值是否合法夯尽,進(jìn)而能否通過驗(yàn)證碼。
勻速運(yùn)動(dòng)登馒,過快拖動(dòng)匙握,一次到位的拖動(dòng),都會(huì)被認(rèn)為是機(jī)器人陈轿,出現(xiàn)forbidden圈纺。
關(guān)于這套驗(yàn)證碼系統(tǒng),可以看官方介紹
產(chǎn)品特性-安全進(jìn)化麦射、體驗(yàn)優(yōu)化蛾娶、管理輕化的驗(yàn)證碼
極驗(yàn)(geetest)是顛覆傳統(tǒng)字符驗(yàn)證碼的的新一代基于行為式驗(yàn)證安全技術(shù)的驗(yàn)證碼
什么是基于行為呢?想想《碟中諜5》中吊炸天的門禁黑科技
簡(jiǎn)而言之:既要拖到位潜秋,又不能過于準(zhǔn)確蛔琅。
兩種思路,一種是笨辦法峻呛,大量采集人類拖動(dòng)形成軌跡庫罗售,直接調(diào)用辜窑;另一種思路是尋找人類拖動(dòng)的規(guī)律,運(yùn)用函數(shù)去模擬寨躁。
看一個(gè)采集到的鼠標(biāo)軌跡:
{-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};
第一個(gè)點(diǎn)穆碎,{-18,-18,0}是代表鼠標(biāo)起始位置(在滑塊左邊),然后是鼠標(biāo)移動(dòng)到滑塊最左端{(lán)0,0,0}职恳,開始向右拖動(dòng){3,0,288}所禀,最后移動(dòng)到{53,-2,1376}完成。
軌跡節(jié)點(diǎn)[53,-2,1376]话肖,53表示水平移動(dòng)的位置北秽,正數(shù)代表向右移動(dòng),負(fù)數(shù)代表向左移動(dòng)最筒; -2表示鼠標(biāo)上下偏移(一般為零贺氓,比如手抖了,就有正負(fù))床蜘;1376表示耗用時(shí)間辙培。
人類拖動(dòng)的一般規(guī)律:首先是鼠標(biāo)移動(dòng)到滑塊上,慢慢拖邢锯,由慢到快扬蕊,到了結(jié)束時(shí)慢慢調(diào)整,直至對(duì)齊丹擎。所以勻速運(yùn)動(dòng)肯定被判定為機(jī)器人尾抑。
找到規(guī)律后,可以用一些函數(shù)模擬這種“慢-快-慢”的節(jié)奏蒂培,比如tanh或者常用神經(jīng)網(wǎng)絡(luò)的sigmoid函數(shù)再愈。
當(dāng)然,函數(shù)還需要增加隨機(jī)數(shù)护戳。一般來說翎冲,沒必要追求100%的通過率,能到80%就可以用了媳荒。
畢竟涉及到商業(yè)抗悍,這能寫到這樣了,再細(xì)就是代碼了钳枕。
過了驗(yàn)證碼以后缴渊,我們拿到了關(guān)鍵參數(shù)geetest_validate,再次提交查詢
可以在網(wǎng)頁源代碼中看到基本信息了
查詢結(jié)果很多條鱼炒,我們要拿到每一條的詳細(xì)頁面網(wǎng)址
以該網(wǎng)址疟暖,再次查詢,無需任何參數(shù),直接Get
拿到基本信息
其中俐巴,找打打印對(duì)應(yīng)的網(wǎng)址
再過一次驗(yàn)證碼骨望,拿到了關(guān)鍵參數(shù)geetest_validate,再次提交查詢
拿到了詳細(xì)報(bào)告的所有信息
至此欣舵,下一步就是寫正則表達(dá)式擎鸠,將網(wǎng)頁數(shù)據(jù)以規(guī)范的形式保存起來。撰寫信貸調(diào)查報(bào)告缘圈、審查報(bào)告的時(shí)候劣光,直接引用數(shù)據(jù),或者可以自動(dòng)生成調(diào)查報(bào)告糟把,省去了復(fù)制粘貼的過程绢涡。
四、自動(dòng)查詢工具
用python實(shí)現(xiàn)遣疯,兩種思路雄可,一種是selenium+phantomjs,優(yōu)點(diǎn)是上手快缠犀,缺點(diǎn)是難以達(dá)到工業(yè)級(jí)運(yùn)用数苫,另一種要讀js文件,自己寫計(jì)算函數(shù)辨液。用到的庫虐急,PIL、requests滔迈、lxml止吁。
看下效果:
主要信息有了,有些亂燎悍,尚未整理敬惦。
關(guān)于信息整理,正則表達(dá)式间涵,以及Txt,Word,Excel之間的自由轉(zhuǎn)換仁热,數(shù)據(jù)分析榜揖、商務(wù)圖表勾哩、盡調(diào)報(bào)告自動(dòng)生成等等門面功夫(形式主義的學(xué)問)之類的,下次再介紹吧举哟。
工具能用多久思劳?js文件版本一旦更新(或切換驗(yàn)證碼系統(tǒng)),工具也需要更新妨猩,不然就掛了潜叛。當(dāng)然,這僅用于個(gè)人提升工作效率使用,一次查詢十來個(gè)尚可威兜,大規(guī)模采集信息肯定會(huì)遇到各種封殺销斟。
驗(yàn)證碼系統(tǒng)和信貸風(fēng)控(特別是反欺詐)有相同之處,都是分類問題椒舵,驗(yàn)證碼是區(qū)分人類或機(jī)器蚂踊,風(fēng)控是區(qū)分好客戶與壞客戶,既要讓好客戶感到不麻煩笔宿,又要讓壞客戶進(jìn)不來犁钟,風(fēng)控太嚴(yán)格,往往誤傷好客戶泼橘,這就是矛盾涝动。我們現(xiàn)在強(qiáng)調(diào)科技金融,言必談大數(shù)據(jù)炬灭、機(jī)器學(xué)習(xí)醋粟、數(shù)據(jù)挖掘、各種風(fēng)控黑科技担败,似乎科技可以解決所有問題昔穴。然而,正如武器專家Q為007精心打造的古靈精怪的武器裝備并不能代替007去自動(dòng)完成任務(wù)提前,工具可以幫助007找到對(duì)手吗货,電影總是以007與敵人首腦之間的的肉搏結(jié)局。再?gòu)?qiáng)大的風(fēng)控體系都離不開人的作用狈网。也沒有什么一勞永逸的“工具”宙搬,風(fēng)控就是人與人的博弈。
五拓哺、信息分析
查詢了這些信息勇垛,如何分析?有時(shí)候走得太遠(yuǎn)士鸥,反而忘記了為什么出發(fā)闲孤,總想爬更多的信息(陷入各種科技坑),其實(shí)拿到信息只是最簡(jiǎn)單的一步烤礁。如何透過各種或真或假的信息挖掘企業(yè)的信用與經(jīng)營(yíng)狀況讼积?名稱、地址脚仔、注冊(cè)資本勤众、法定代表人什么法律含義?各種變更有什么潛在的意圖鲤脏?如何挖掘企業(yè)的實(shí)際控制人们颜?如何判斷實(shí)際控制人的所思所想吕朵?這才是真正的難題。
…更多文章請(qǐng)到信貸風(fēng)控手記-知乎專欄
…更多回答請(qǐng)看H-Howard
H Howard:在銀行從事風(fēng)險(xiǎn)管理是什么樣的體驗(yàn)窥突?
H Howard:為什么因?yàn)榇尕浄e壓會(huì)導(dǎo)致當(dāng)期毛利率的提高努溃?
H Howard:國(guó)內(nèi)汽車金融的現(xiàn)狀和前景是怎樣的?
H Howard:在一筆貸款審批中阻问,有什么措施能在不變更審批條件下茅坛,可以不提供資料就判斷客戶的資質(zhì)呢?
H Howard:在消費(fèi)金融公司工作是一種什么樣的體驗(yàn)则拷?
H Howard:非金融出身的風(fēng)險(xiǎn)控制應(yīng)該學(xué)哪些方面的專業(yè)知識(shí)贡蓖?
H Howard:財(cái)務(wù)報(bào)表分析具體怎么做?
H Howard:信貸的全流程是怎么做的煌茬?是否有可能做到較高的自動(dòng)化斥铺?
最近寫了本小書,歡迎購(gòu)買