關於某東的登錄

  • 2019 年 11 月 28 日
  • 筆記

關於這個網站的登錄,百度Google一大推。然後呢,我就都試了一番。最後發現只有掃碼登錄最靠譜。

第一種:直接請求

第二種:selenium 模擬登錄 (第二篇文章)

第三種:掃碼登錄 (第三篇文章)

第一種:直接請求

點擊登錄會發送請求,參數看上圖

實際提交的參數, 看下圖,圖中圈出來的基本都是可以找到的,就在請求的 HTML 中。

而 fp 參數和 eid 參數實際是固定的。所以可以直接寫死。看到了一個 pubKey ,我覺得看到這個玩意基本都能猜到這是一個 RSA 加密了,加密的就是 密碼了,

然後還有一個 seqSid 參數 和 一個 authcode 參數

seqSid 參數是個介面返回的響應內容,全局搜索 _jdtdmap_sessionId 就會找到這個介面。

authcode 這個參數就是滑動之後生成的參數,也是最噁心的一個參數。

authcode 參數來源:

請求 URL:

參數:

響應:validate 就是 authcode

這個請求參數中實際只有 d 參數是最重要的,其他的就比較簡單了。

c: 是獲取驗證碼圖片時返回的 challenge 參數。 slide/g.html

bg 和 patch 就分別是背景圖和缺口形狀的圖片

識別這個距離的程式碼,是從網上複製的,忘了是從哪裡來的了。

    def test_demo_cv2(self):        """        得到缺口位置        :return:        """        block = cv2.imread("bg.jpg", 0)        template = cv2.imread("patch.jpg", 0)        w, h = template.shape[::-1]        # 二值化後的圖片名稱        blockName = "block.jpg"        templateName = "template.jpg"        # 將二值化後的圖片進行保存        cv2.imwrite(blockName, block)        cv2.imwrite(templateName, template)        block = cv2.imread(blockName)        block = cv2.cvtColor(block, cv2.COLOR_RGB2GRAY)        block = abs(255 - block)        cv2.imwrite(blockName, block)        block = cv2.imread(blockName)        template = cv2.imread(templateName)        # 獲取偏移量        result = cv2.matchTemplate(block, template,                                   cv2.TM_CCOEFF_NORMED)  # 查找block在template中的位置,返回result是一個矩陣,是每個點的匹配結果        x, y = np.unravel_index(result.argmax(), result.shape)        cv2.rectangle(block, (y, x), (y + w, x + h), (7, 249, 151), 2)        cv2.imshow('block', block)        cv2.waitKey(0)        print("x方向的偏移", int(y * 0.4 + 18), 'x:', x, 'y:', y)        return y

但是有時候不準確。

w: 驗證碼的寬,固定 280

appID: 固定值

product:固定值

scene: 固定值

e: 固定值

s: 全局搜索 _jdtdmap_sessionId

都是頁面中值。

最後說一下 d , d 的位置:在 slide.js 中,名字中間有版本號,沒寫

g 的值

這也就是軌跡了列表了,對軌跡列表進行加密生成了 d 參數

軌跡列表的特點:

第一組,坐標 x 是固定的

最後一組 x – 第一組的 x = 滑動的距離

y 的值變化很小

生成軌跡的方法很多,但是好像能百度到的都沒有什麼用了。

生成軌跡列表後,傳遞參數到加密的函數中,返回加密的參數 d

加密的函數位置:

複製出來,稍微改一下就可以使用 python 直接執行了,我用的是 execjs.

基本到這裡就結束了。

但是,我生成的軌跡基本沒用,通過不了,百度了好多也沒用。