Java 使用crawler4j进行身份验证
我的目标是登录到一个站点,然后获取我的帐户信息。我正在使用crawler4j4.2Java 使用crawler4j进行身份验证,java,authentication,crawler4j,Java,Authentication,Crawler4j,我的目标是登录到一个站点,然后获取我的帐户信息。我正在使用crawler4j4.2 AuthInfo authJavaForum = new FormAuthInfo("myuser", "mypwd", "http://www.java-forum.org", "login", "password"); config.addAuthInfo(authJavaForum); PageFetcher pf = new PageFetcher(config); CrawlController ctr
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的信息(google analytics))
1) 如何保持登录状态
2) 是否还有其他问题阻止我继续登录
3) 是否有任何网站实际使用crawler4j
到目前为止我所尝试的:(克隆了存储库)
a) 在PageFetcher的构造函数中设置CookieStore(尽管默认情况下它是在http客户端库中创建的)
b) 在fetchPage(在PageFetcher中)我创建了一个HttpClientContext,设置cookieStore,并将其传递给execute方法
但是没有成功
我还尝试用我自己的downloader/httpClientGenerator扩展它,以支持(表单)身份验证,但我遇到了同样的问题
相关问题:这真的很尴尬。再次检查页面,特别是表单后,我意识到
操作
指向login/login。因此,当将URL更改为我的AuthInfo
中时,我会得到我的个人详细信息。这真是令人尴尬。再次检查页面,特别是表单后,我意识到操作
指向login/login。因此,当将URL更改为myAuthInfo
内时,我会获得我的个人详细信息