小微企業名錄geetest破解驗證

小微企業查詢系統git地址

破解geetest offline的嘗試

簡介

最近由於有須要對爬取的非上市公司進行一個驗證,而絕大多數的非上市公司又都是小微企業,比起爬企業徵信系統來講,仍是小微企業名錄更方便一點node

特色

基於node.js axios全程破解 無需下載圖片 無需模擬軌跡,offline模式就是任性python

以爲不錯幫忙Star一下啦~

破解流程

首先咱們跟着正常獲取數據的流程走一遍ios

  1. 打開小微企業名錄而且打開控制檯

能夠看到大概有這幾個請求git

http://xwqy.gsxt.gov.cn/security/verify_ip
http://xwqy.gsxt.gov.cn/security/verify_keyword
http://xwqy.gsxt.gov.cn/pc-geetest/register?t=1516872325770

查看一下response(固然你熟悉geetest也行)就會發現register就是geetest的初始化請求啦 github

返回值以下npm

challenge:"a1d0c6e83f027327d8461063f4ac58a61c"
gt:"6146190e4171da316dbb5bcc076e2607"
success:0

其中你能夠發現success基本都是0 也就是說離線模式axios

什麼是離線模式?

基本就是geetest不參與判斷的一個狀態,驗證部分都在前臺和中間服務器完成api

回去看以前系統下載的js 會發現兩個geetest提供的js服務器

  • geetest.0.0.0.js
  • offline.6.0.0.js

這幾個源文件也提供在項目中了restful

  1. 滑塊拼合

發送了一個新的驗證請求

http://xwqy.gsxt.gov.cn/pc-geetest/validate

request以下:  

geetest_challenge:a1d0c6e83f027327d8461063f4ac58a61c
geetest_validate:010886ec_0084e_10100077776e
geetest_seccode:010886ec_0084e_10100077776e|jordan
challenge在第一步咱們已經獲取了,問題是validate怎麼獲取? 同時seccode就是validate加了一個|jordan而已

既然是offline 那就分析offline.js唄

查看代碼就能看到這句

return c >= f - 3 && c <= f + 3 ? {
            success: !0,
            message: "success",
            validate: b.A(c, e.d.challenge) + "_" + b.A(a.b("rand0", e.c), e.d.challenge) + "_" + b.A(a.b("rand1", e.c), e.d.challenge),
            score: Math.round(d / 200)
        } : {success: 0, message: "fail"}

這不就是咱們要的麼!

validate: b.A(c, e.d.challenge) + "_" + b.A(a.b("rand0", e.c), e.d.challenge) + "_" + b.A(a.b("rand1", e.c), e.d.challenge),

offline.6.0.0.js和offline.5.0.0.js能夠看出同樣是經過密鑰 rand rand1進行加密獲取一個值,一半來講這種方案就是得依靠收集案例倒推,可是咱們是不會重複造輪子的

github關鍵詞一搜就能發現已經有人整理好了'https://github.com/9468305/python-script/blob/master/geetest_offline/util.py'

因此那就用唄

後續就只是涉及到爬蟲以及頁面跳轉的問題了,具體能夠看util內的代碼

並且在micro_lib內也能夠直接搜索 發送驗證的地址改成http://xwqy.gsxt.gov.cn/mirco...

並相應修改傳入的值便可

organId:100000
textfield:encode後的關鍵詞
fwId:1400
searchOrganId:
channelId:99
captcha:
geetest_challenge:3ef815416f775098fe977004015c619332
geetest_validate:010886ec_0084e_10100077776e
geetest_seccode:010886ec_0084e_10100077776e|jordan

restful-api

已經作了一個api形式的 直接在url內打入關鍵詞便可爬取

運行步驟

npm install
npm run start
curl http://127.0.0.1:4001/公司關鍵詞
相關文章
相關標籤/搜索