使用爬虫4j进行身份验证



我的目标是登录到一个网站,然后获取我的帐户信息。我正在使用爬虫4j 4.2

AuthInfo authJavaForum = new FormAuthInfo("myuser", "mypwd", "http://www.java-forum.org", "login", "password");
config.addAuthInfo(authJavaForum);
PageFetcher pf = new PageFetcher(config);
CrawlController ctrl = new CrawlController(config, pf, robotsts);
// add the page I want as seed
ctrl.addSeed("http://www.java-forum.org/account/personal-details");
ctrl.startNonBlocking(BasicCrawler.class, 5);

在日志记录中,我看到身份验证成功,并且我还看到 http 客户端连接现在包含一个 cookie,其中包含我从页面获得的会话。但似乎我仍然缺少一些东西,获取我个人详细信息的请求失败,错误代码为 403(禁止),就好像我没有登录一样。

我使用 wireshark 是为了在使用 crawler4j 和手动登录时查看差异,但请求似乎是相同的(最大的区别是我的 cookie 不包含任何关于 ga 的信息(谷歌分析))

1) 如何保持登录状态?

2) 是否有任何其他问题阻止我保持登录状态?

3)是否有任何网站实际上正在使用crawler4j?

到目前为止我尝试过:(克隆存储库)

a) 在

PageFetcher的构造函数中设置CookieStore(尽管默认情况下它是在http-client库中创建的)

b) 在 fetchPage(在 PageFetcher 中)我创建了一个 HttpClientContext,设置了 cookieStore,并将其传递给 execute 方法

虽然没有成功。

我也尝试了webmagic并使用我自己的下载器/httpClientGenerator扩展它以支持(表单)身份验证,但是我遇到了同样的问题

相关问题: 带身份验证的爬虫4j

这真的很尴尬。 再次检查页面(尤其是表单)后,我意识到action指向登录/登录。因此,当我AuthInfo将URL更改为 http://www.java-forum.org/login/login 时,我会获得我的个人详细信息。

相关内容

  • 没有找到相关文章

最新更新