从 cookiesyncmanager 进行 Jsoup cookie 身份验证以从 https 站点抓取

问题描述 投票:0回答:1

我有一个使用 webview 的 android 应用程序,用户必须使用用户名和密码登录,然后才能重定向到我想使用 jsoup 刮除数据的页面。由于 jsoup 线程将是不同的会话,因此用户必须再次登录。

现在我想使用从 webview 接收到的 cookie 与 jsoup 请求一起发送,以便能够抓取我的数据。

使用以下代码将 cookie 与 cookiesyncmanager 同步。这基本上是我陷入困境的地方,因为我不知道如何读出 cookie,也不知道如何将其附加到 jsoup 请求。请帮忙? :)

public void onPageFinished(WebView view, String url) {

            CookieSyncManager.getInstance().sync();

用户登录后我正在执行的 jsoup scrape 是这样的:

  doc = Jsoup.connect("https://need.authentication.com").get();

                Elements elements = doc.select("span.tabCount");
              Element count = elements.first();


                Log.d(TAG, "test"+(count));
android web-scraping cookies webview jsoup
1个回答
2
投票

我不是 Android 开发者,但也许你可以尝试这样的事情:

final String url = "https://need.authentication.com"; // -- Android Cookie part here -- CookieSyncManager.getInstance().sync(); CookieManager cm = CookieManager.getInstance(); String cookie = cm.getCookie(url); // returns cookie for url // ... // -- JSoup part here -- // Jsoup uses cookies as "name/value pairs" doc = Jsoup.connect("https://need.authentication.com").header("Cookie", cookie).get(); // ...

我希望这会有所帮助,但正如我之前所说:我不是 Android 开发人员

(并且代码未经过测试!)

这里有一些文档:

  • Cookie 管理器
  • CookieSyncManager
  • Jsoup 连接
© www.soinside.com 2019 - 2024. All rights reserved.