Java 使用HttpClient登录到https://id.wsj.com/access/50f57264bd7fb2d2f6629af6/latest/login_standalone.html
我正在尝试登录URLJava 使用HttpClient登录到https://id.wsj.com/access/50f57264bd7fb2d2f6629af6/latest/login_standalone.html,java,apache,httpclient,apache-httpclient-4.x,Java,Apache,Httpclient,Apache Httpclient 4.x,我正在尝试登录URLhttps://id.wsj.com/access/50f57264bd7fb2d2f6629af6/latest/login_standalone.html使用HttpClient。但是当通过代码调用时,客户端不会从加载css。我使用Fiddler调试了代码 我的代码: public void getRequest() throws ClientProtocolException, IOException { try { HttpHost proxy
https://id.wsj.com/access/50f57264bd7fb2d2f6629af6/latest/login_standalone.html
使用HttpClient。但是当通过代码调用时,客户端不会从加载css。我使用Fiddler
调试了代码
我的代码:
public void getRequest() throws ClientProtocolException, IOException {
try {
HttpHost proxy = new HttpHost("127.0.0.1", 8888);
HttpClient httpclient = HttpClientBuilder.create().setProxy(proxy).setUserAgent("").build();
HttpContext localContext = new BasicHttpContext();
try {
BasicCookieStore cookieStore = new BasicCookieStore();
localContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore);
HttpHost target = new HttpHost("id.wsj.com", 443, "https");
HttpGet req = new HttpGet("/access/50f57264bd7fb2d2f6629af6/latest/login_standalone.html");
req.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
req.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36");
System.out.println("executing request to " + target + " via " + proxy);
HttpResponse rsp = httpclient.execute(target, req, localContext);
System.out.println("Status Code" + rsp.getStatusLine().getStatusCode());
printHeaders(rsp.getAllHeaders());
printCookies(cookieStore);
} finally {
httpclient.getConnectionManager().shutdown();
}
} catch (IOException e) {
e.printStackTrace();
}
}
通过Java的Fiddler快照
通过chrome创建快照
我是新手,所以请帮助专家!谢谢 IMO-您正在抓取一个html页面,您可能不需要登录。假设没有API(WSJ的官方登录调用-就像您看到的API登录一样) 您应该使用您的调试工具,以便查看当您单击WSJ上的“登录”按钮时发布的内容。您正在处理的页面在处理过程中为时过早。要以编程方式登录,为什么页面中与登录页面上“onLogonRequested”事件相关的对话框(而不是进程)的格式与此相关?当单击登录按钮时,关注页面和JS通过XHR发送给WSJ服务器的内容。然后使用HTTP客户机格式化一篇文章,该文章尽可能接近上面提到的XHR文章 您可能还需要解决路径节点“访问”和“最新”之间的“会话”变量。如果这只是cookie信息,您可以忽略它。同样,它与页面对话框混合在一起,而不是用于登录的api
这可能会让你登录 在一切发生之前,我试过你说的话。我在提交表单上使用了
jquery
serialize函数来查看POST请求使用的所有参数。但它失败了。我捕获了响应,发现登录表单没有完全加载,提交按钮被禁用,因为css没有从akamai
服务器加载。从那时起,我试图首先加载整个页面正确!使用另一个导线电平分析仪。你必须确切地知道邮件上写的是什么。如果您的jquery工具无法剪切它,请找到另一个工具。。试试wireshark。在你确定要发布的内容之前,你一直处于黑暗中。标题是什么?帖子的主体是什么?我用Fiddler
分析了它!代码不会像谷歌浏览器那样从服务器加载css,并且会显示正确的页面<代码>我在我的机器上屏蔽了AKAMAI域一次,Google Chrome加载的页面(已禁用提交按钮的页面)与脚本加载的页面相同(捕获点击后响应)代码>因此无法登录:(