使用HttpClient登录到 https://id.wsj.com/access/50f57264bd7fb2d2f6



伙计们正在尝试使用HttpClient登录到URL https://id.wsj.com/access/50f57264bd7fb2d2f6629af6/latest/login_standalone.html。但是客户端在通过代码调用时不会从 http://a248.e.akamai.net:443 加载 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();
    }
}

Fiddler Snapshot via Java

http://s3.postimg.org/qimqrxo2q/using_httpclient.jpg

通过铬拍摄快照

http://s17.postimg.org/u6dpmvuam/via_chrome.jpg

我是新手,所以请帮助专家!谢谢!

IMO - 您正在抓取一个可能不需要登录的 html 页面。假设没有 API(WSJ 的官方登录调用 - 就像你在这里看到的 api 登录一样)。

您应该使用调试工具,以查看单击《华尔街日报》上的"登录"按钮时出现什么 POST。您正在处理一个在流程中过早的页面。要以编程方式登录,为什么与登录页面上涉及的"onLogonRequest"事件相关的页面中格式化对话框(而不是进程)的内容?关注单击登录按钮时页面和 JS 通过 XHR 发送到 WSJ 服务器的内容。然后使用您的 HTTP 客户端格式化一个尽可能接近上面提到的 XHR POST 的 POST。

您可能还需要解决路径节点"访问"和"最新"之间的"会话"变量。如果这只是 cookie 信息,您可以忽略它。同样,它与页面对话框混淆,而不是用于登录的 api。

这可能会让您登录。

最新更新