我的目标是登录到一个网站,然后获取我的帐户信息。我正在使用爬虫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 时,我会获得我的个人详细信息。