我的目标是登录到一个网站,然后获取我的帐户信息。我使用的是crawler4j 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 (google )的信息)。
1)如何才能保持登录状态?
( 2)还有其他问题阻止我继续登录吗?
( 3)是否有真正与crawler4j合作的网站?
到目前为止,我尝试过的是:(克隆存储库)
( a)在CookieStore的构造函数中设置PageFetcher (尽管默认情况下它是在http-客户机库中创建的)
( b)在fetchPage ( PageFetcher)中,我创建了一个HttpClientContext,设置了cookieStore,并将其传递给了execute方法
但没有成功。
为了支持(表单)身份验证,我还尝试了网魔法并使用我自己的下载程序/httpClientGenerator扩展了它,但我也遇到了同样的问题
相关问题:具有身份验证的Crawler4j
发布于 2016-02-18 15:12:12
这真的很尴尬。在再次检查页面,特别是表单之后,我意识到action指向了登录/登录。因此,当在我的http://www.java-forum.org/login/login中将URL更改为AuthInfo时,我会得到我的个人详细信息。
https://stackoverflow.com/questions/35481903
复制相似问题