Ⅰ 猫眼商家后台登录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环境中调试和解决问题的经验。在后续的开发过程中,这一经验将有助于我们更高效地处理类似挑战。