所以,我在这里看到了其他问题,答案很少或没有答案。
我正在尝试登录Facebook以查看返回404错误的个人资料页面,除非我已登录。
我认为问题在于,有额外的数据或cookie没有随Web请求一起发送到服务器。
这是我现在拥有的。
Response res = Jsoup.connect("https://www.facebook.com/login.php?login_attempt=1")
.data("email", "fake@gmail.com", "pass", "myPassword")
.method(Method.POST)
.execute();
Document doc = res.parse();
System.out.println(res.cookies());
System.out.println(res.statusMessage());
Document facebookDoc = Jsoup.connect(url).cookies(res.cookies()).userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0").referrer("http://www.google.com").get();
我尝试使用和不使用用户代理/引荐来源代码。
尝试连接到“url”的最后一行会导致404错误,就好像我没有登录一样。我的目标是让个人资料页面的html位于“url”。
我尝试在第一次POST期间收到任何cookie,但它似乎不接受它。
我还需要做什么?如果除了Jsoup之外还有其他API可以做得更好,那么我愿意切换。我注意到有人推荐HTMLUnit,虽然我无法让它工作。
如果官方Facebook API可以登录我查看个人资料,那么对此的引用会很棒。它看起来像是发布到人们的时间表等。
编辑:我在尝试发布POST之前找到了建议使用GET请求登录服务器的人来解决我的登录问题。
Response reachPageInitially = Jsoup.connect("https://www.facebook.com/login.php?login_attempt=1")
.method(Method.GET)
.execute();
Response res = Jsoup.connect("https://www.facebook.com/login.php?login_attempt=1")
.data("email", "myEmail@gmail.com", "pass", "myPassword")
.method(Method.POST)
.cookies(reachPageInitially.cookies())
.execute();
Document doc = res.parse();
System.out.println(res.cookies());
System.out.println(res.statusMessage());
Document facebookDoc = Jsoup.connect(url).cookies(res.cookies()).cookies(reachPageInitially.cookies()).userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0").referrer("http://www.google.com").get();
虽然我已经停止使用JSoup并且正在查看其他解决方案作为我感兴趣解析的配置文件页面几乎所有Javascript和JSoup都无法加载JS。