Ⅰ 貓眼商家後台登錄rohrToken的加密方式
面對一個突發的編程問題,我與同事共同探索了解決方案。原本猜想可能是登錄頁面地址變動導致的爬蟲功能失效,但通過Fiddler抓包對比發現,登錄參數中多出一個名為RohrToken的參數,這引起了我們的注意。
在深入分析頁面內容時,我們意識到該網站大量依賴JavaScript進行渲染,導致直接從Chrome開發人員工具中獲取信息變得困難。通過使用篩選器和搜索功能,我們關注到與登錄相關的js腳本。在調試過程中,發現登錄按鈕觸發後彈出的彈窗中載入了新的JS和CSS文件,這為我們提供了新的線索。
通過搜索RohrToken,我們發現有兩個JS文件和一個HTML文件與之相關。將HTML代碼格式化並使用搜索功能,我們找到了RohrToken的使用痕跡。進一步分析後,我們發現RohrToken與一個名為ip的對象相關聯。通過在ip.reload函數處設置斷點,我們觀察到在頁面載入時這個函數被執行。
盡管我們發現jv的值相對固定,可以用於驗證,但我們意識到直接調用ip.reload函數可能不足以獲取正確的Token值。我們嘗試將發現的內容整合到一個自定義的HTML頁面中,並調用Rohr_Opt.reload函數,因為我們在之前的分析中發現ip被賦值給了Rohr_Opt。通過執行自定義HTML頁面,我們成功獲取了Token值。
為了驗證Token的有效性,我們使用PostMan進行了測試,結果表明Token可以被接受。然而,在實際應用中,我們發現Token仍然需要通過滑塊驗證。為了進一步解決問題,我們研究了另外三個參數的來源和作用,發現它們與鍵盤按鍵的特徵分析相關。通過手動或隨機設置這些參數值,我們能夠成功通過驗證。
在獲取正確的RohrToken取值方法後,我們考慮如何將HTML應用於實際場景。考慮到使用phantomjs載入頁面執行JavaScript,但我們遇到了需要滑塊驗證的問題。進一步的分析揭示了代碼中對webdriver和phantomjs的檢測機制,通過修改相關JS代碼以繞過檢測,我們成功解決了這一問題。
為了在生產環境中部署解決方案,我們注意到了在selenium不同版本中可能出現的埠配置問題,特別是在與防火牆交互時。同時,我們使用Django作為介面,通過創建響應HTML的介面,結合phantomjs請求該介面載入頁面。這一過程避免了直接在Django views中使用phantomjs讀取本地文件導致的渲染問題。
通過上述分析和實踐,我們不僅解決了特定技術問題,還積累了在復雜JavaScript環境中調試和解決問題的經驗。在後續的開發過程中,這一經驗將有助於我們更高效地處理類似挑戰。