使用OkHttp3,我很开心地刮了一个网站一段时间。但是,网站的某些组件已升级,现在正在使用附加的OpenID承载身份验证。
我很肯定99.9%的请求由于此承载令牌而失败,因为当我使用Chrome开发工具进行检查时,我看到承载令牌仅针对这些部分弹出。此外,几个请求请求将链接到以“ .well-known / openid-configuration”结尾的链接。另外,当我在我的OkHttp3代码中通过浏览器对承载令牌进行硬编码时,一切正常。没有代码,我会收到一条401未经授权的消息。
我发现我的浏览器仿真距离实际情况还差得很远,因此我决定使用无头浏览器设置来执行一些javascript调用。由于我使用Java,因此我使用了HtmlUnit。使用该工具,我可以很快达到可以成功刮除网站某些部分的功能(就像使用OkHttp3一样),但是由于新更新的部分它再次失败。我检查了一下,但在任何响应中(在标题或cookie中)都找不到承载令牌。
这种方法(使用无头浏览器)是否有可能奏效?还是有其他我可以检查的方法。
答案 0 :(得分:0)
我正在尝试使用Htmlunit和java进行刮擦。我无法阅读 HTMLUnit的按钮ID,因为它来自Dom树。试图给延迟,但似乎无法正常工作。我正在使用Azure AD和ADFS进行身份验证。感谢帮助。