領先的互聯網解決方案提供商,專業關于百度站長平臺圖片驗證碼的處理思路!

深圳 : 0755-2101 0201 廣州 : 020-8092 8113 東莞 : 0769-3326 0066 <<<全國分公司
  • 網站建設
  • SEO推廣
  • 客戶案例
  • 聯系我們
  • 掃描添加微信

    30秒獲取報價:

    提交您的電話,免費贈送一年維護及關鍵詞排名

  • 聯系人*
  • 手機號*
  • 關于百度站長平臺圖片驗證碼的處理思路

    您所在的位置:首頁 -> SEO培訓


    發布時間:2019-12-02 10:12

    前段時間發的白帽和談天說地沒有打賞,感覺是分享關于黑帽的更容易獲得打賞,那就接著分享關于黑帽這方面的吧。

    進入主題:
    百度升級后的驗證碼是比較惡心的,頁面上說明AI驗證碼,名副其實,花了差不多2天的時間前后梳理算法,第一版跑的還算可以,可也僅僅撐了1周多。
    昨天一更新,樣本庫圖片大大提升,沒得玩了。故而整理下自己的思路和代碼,有了這篇文章。


    實現圖片自動校驗,這里有2個核心的東西??蛻舳说膉s加密算法,圖片旋轉角度自動化識別。前者比較簡單,可以通過瀏覽器打點監聽定位到具體的腳本
    位置,后者有些難度,你根本不知道需要選擇多少角度,期間嘗試用ocr識別,ml.net圖片訓練最終都難逃人工修正這一步。之所以第一版能跑得益于百度
    剛剛更新,圖片庫不大,通過自動化程序把所有的驗證碼下載到本地進行修正,然后對圖片做360度的標識計算存儲,以便自動驗證時候進行匹配。
    1.先說下js部分,這部分一開始試著一步步溯源,然后用c#重新擼一遍,發現工作量有點大,它的PassMachine對象里面幾個算法比較分散,且js被壓
    縮,調試花費的時間較大,于是換了一種思路,把https://ziyuan.baidu.com/static/ziyuan/pkg/js/base_16ee0ec.js (注意base_后面的字符串,可能是動態的)下
    載到客戶端,然后通過c#與js進行交互繞過算法部分。
    另一個文件https://ziyuan.baidu.com/static/ziyuan/widget/site/siteadd_845c6f7.js(注意siteadd_后面的數字,可能是動態的),里面針對于每個賬號分配了ak參數:


    頁面載入時會初始化驗證碼算,所以首要的是獲取ak這個參數;
    考慮到2個js的文件里面都有參數(可能是版本號,也可能每個賬號對應不同的參數),那第一步獲取https://ziyuan.baidu.com/site/siteadd頁面源代碼,然后分析出
    base_參數.js,和siteadd_參數.js,這2個文件,通過正則表達式獲取siteadd這個js里面的ak參數,保存起來。通過字符串處理,將base這個js文件中依賴的外部庫干

    掉(防止交互執行)的時候js報錯。然后構建一個html,便于WebBrowser和html頁面通交互執行js


    源碼文字形式發不了,源碼太長,發布的時候一直提示文本過長,希望暴風能改一下文本過長的限制,這里就上圖片了,需要文本的可以去文末下載附件



    獲取驗證碼的原算法如下:

     

    修改成c#如下:


    因為有了ak參數,這樣我們可以寫個程序批量刷驗證碼:



    到這一步,我們知道怎么獲取驗證碼了,下面說下驗證碼的校驗算法:
    在mkd.js中搜索postData方法,并在如下圖片中斷點:



    為什么叫AI驗證碼呢,在客戶端行為上鼠標的拖動軌跡和點擊位置都要做記錄,這些坐標會存儲到rzData參數中,且store.count這個數字滿20,就會提交一次,不管結果如何post之前會把它清空。
    回到postData提交方法,核心是構建了c參數對象,c的fs屬性值是個核心加密算法生成的,溯源很費力,所以我上面直接把mkd.js內容讀取,并構建了一個html用來交互。由于fs是用rzData對象加密生成的,
    同時我們也需要構建rzData對象,這個對象完全可以先通過瀏覽器手動正常提交,在postData之前斷點,把它輸出到控制臺,它核心是ac這個角度參數,我們只需要把ac修改成每一個圖片旋轉的角度即可


    fs算法可以通過WebBrowser和JS進行交互,構建一個函數調用頁面原有的encrypt方法,得到加密后的字符串:



    到此,除了rzData對象中的ac參數(角度),其他都已經解決?;剡^頭來,我們看圖片驗證碼的效果,以及調試測試,發下,推動滑塊從起始位置拉到最后,圖片旋轉了360度,而拖動長度是210(260-50),也就是210的長度對應360度,
    角度=拖動的長度*360/210,對應js中的toFixed方法把結果保留了2位小數:


    我們甚至可以自己寫一個模擬核實下:


    那么問題來了,怎么樣才能獲取圖片的選擇角度,前面說過,這里我嘗試了很多方法都沒自動化實現,最終通過人工修正的方式解決。這里包含圖片采集服務,修復處理2個模塊:
    驗證碼采集服務,主要用來不停下載驗證碼圖片,并處理驗證碼圖片。
    1.多任務多線程下載驗證碼,
    2.通過相似算法,過濾已經存在的圖片(同一張圖片,不同角度)
    3.將驗證碼圖片每間隔3度旋轉一次,然后用哈希算法得到旋轉后的圖片標識,同時獲取每一次旋轉后的圖片前5個主色調的rgb值(可以多個,感覺5個夠用了),這樣一共就是120條數據,
    每條數據的大致數據結構:
    圖片id(1到180),圖片哈希碼,前5主色調rgb值5個,是否旋轉后的正確圖片(需要人工設置)

    這里為什么要隔3度旋轉計算一次,因為百度這個判斷是可以由誤差的,另外,過多的數據匹配檢索是消耗時間的。
    圖片id是為了對應人工標記的旋轉正確的圖片(這樣就能夠判斷待驗證碼的圖片和修正的圖片查,需要旋轉多少度),哈希碼和rgb是為了匹配目標圖片,通過這2個基本能夠精確匹配。

    昨天百度更新了驗證碼的圖片,在4個角上隨機加了1到3個小圖片,用來混淆,其實這個和之前不加小圖片沒有任何區別,你完全可以在驗證碼采集服務里面加個算法,
    保存圖片只保留圓形區域(相當于圖片裁剪);其實難度在于更新后的圖片庫比之前多了幾個量級,我太難了?。?!
    裁剪算法


    裁剪后的效果






    關于百度站長平臺圖片驗證碼的處理思路相關文章2

    提交您的電話,免費贈送一年維護及關鍵詞排名

  • 聯系人*
  • 手機號*
    1. 首頁
    2. 網站建設
    3. 網站推廣
    4. 關于百度站長平臺圖片驗證碼的處理思路
    5. 案例展示
    6. 關于我們
    7. 聯系我們
    網站建設
  • 企業網站
  • 營銷型網站
  • 響應式網站
  • 模板網站
  • 服務項目
  • 關于百度站長平臺圖片驗證碼的處理思路
  • 軟件開發
  • OA系統
  • CRM系統
  • 小程序開發
  • 優勢介紹
  • 誠信經營
  • 經驗豐富
  • jsp語言開發
  • 創意、高端
  • 網站內置SEO
  • 作品展示
  • 企業網站
  • sitemap
  • 外貿網站
  • 商城網站
  • 上市企業/政府網站
  • 關于我們
  • 關于我們
  • 聯系我們
    1. 掃碼添加微信咨詢

    Copyright 2008-2018 關于百度站長平臺圖片驗證碼的處理思路深圳市信科網絡科技有限公司 Shenzhen Sinco Network Co., Ltd 嚴禁抄襲模仿本站 違者依法追究責任! 粵ICP備14083186號-3

  • 深圳公司
    電話 : 0755-2101 0201
    手機 : 136 3165 7619
    服務項目:關于百度站長平臺圖片驗證碼的處理思路
  • 廣州分公司
    電話 : 020-8092 8113
    手機 : 135 3988 3715
    地址 : 廣州市海珠區寶崗大道268號中新大廈1912
  • 東莞分公司
    電話 : 0769-3331 9353
    手機 : 137 1719 8162
    地址 : 東莞市南城區鴻福路83號曼哈頓廣場2409
  • 武漢分公司
    電話 : 027-8355 8661
    手機 : 182 4491 9118
    地址 : 武漢市東西湖區金銀湖路18號財富大廈30E
  • 上海分公司
    電話 : 021-3113 7661
    手機 : 132 6719 9217
    地址 : 上海市閘北區江場西路299弄中鐵廣場堡尼大廈2131
  • 撥打電話
  • 添加微信
  • QQ咨詢
  • 2020世界男篮排名