当前位置: 首页 > 知识库问答 >
问题:

java - 做爬虫时如何提取网站登录后的cookie?

乐正涵忍
2024-07-23

我知道可以通过F12查看,我现在的需求是要完整的请求头的cookie内容,因为我需要放到爬虫的Jsoup的connection的head里,

            document = Jsoup.connect(firstPageUrl).header("cookie", "select_city=310000; lianjia_ssid=60c0b8f5-ca5a-4a88-ae47-b176c11a2f9e; lianjia_uuid=86bb7e26-da5a-4f8c-9a69-d269f70f67b2; crosSdkDT2019DeviceId=-3ke75x--wc40d2-cpmsf7ibmyhxgmv-prkjpt4lf; login_ucid=2000000022502221; lianjia_token=2.0014eb9c6a6d19aacb0546b55b85116c94; security_ticket=JEhDxq4SfLZghISV/giK93V/Uua5jdnpmzv8NLLO9uRypyam5J3maZ5ZmATysv23IJzT531EyCPKIu4oMe93AsKd0zf4LNKgCvVtv25kzZ2c35wcHRW8nX49cLpkL/pI8oHU6ikLHSHY/wvRwcCHpot/zkEnhxYTKaHX1iyCC68=; ftkrc_=8352ce54-c4c2-465e-bc70-457ac657c025; lfrc_=9f1a6f54-4ef6-472f-8776-3fa32af53ace; Hm_lvt_9152f8221cb6243a53c83b956842be8a=1690213292; _smt_uid=64be9bac.2cf01c22; _jzqa=1.3484984555247874600.1690213292.1690213292.1690213292.1; _jzqc=1; _jzqx=1.1690213292.1690213292.1.jzqsr=clogin%2Elianjia%2Ecom|jzqct=/.-; _jzqckmp=1; sajssdk_2015_cross_new_user=1; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%22189889019fb60-0ec6ac3b15b43f-26031c51-2073600-189889019fc418%22%2C%22%24device_id%22%3A%22189889019fb60-0ec6ac3b15b43f-26031c51-2073600-189889019fc418%22%2C%22props%22%3A%7B%7D%7D; _ga=GA1.2.1676355379.1690213294; _gid=GA1.2.1046441349.1690213294; _gat=1; _gat_past=1; _gat_global=1; _gat_new_global=1; _gat_dianpu_agent=1; Hm_lpvt_9152f8221cb6243a53c83b956842be8a=1690213346; _jzqb=1.2.10.1690213292.1; lianjia_token_secure=2.0014a66b976d545d36050b42a68b210cbc; _ga_LRLL77SF11=GS1.2.1690213294.1.1.1690213348.0.0.0; _ga_GVYN2J1PCG=GS1.2.1690213294.1.1.1690213349.0.0.0").get();

有什么好的获取cookie的方法吗?我总不可能手动输入一个一个的键值对吧?

共有2个答案

裴英才
2024-07-23

你可以在网站找个请求然后看Cookie直接复制就行了
image.png

有宏邈
2024-07-23

在编写爬虫时,为了自动获取并设置登录后的cookie,你不需要手动输入每一个键值对。有几种方法可以帮助你自动化这个过程:

  1. 使用浏览器自动化工具
    你可以使用Selenium等浏览器自动化工具来模拟登录过程,并直接从浏览器的cookie存储中提取cookie。Selenium允许你执行JavaScript代码来访问cookie,或者你可以通过Selenium WebDriver的API来获取cookie。
  2. 分析登录请求的响应
    如果你知道登录请求的URL和所需的POST数据,你可以直接发送登录请求,并从响应头中提取Set-Cookie字段。这通常需要使用像Apache HttpClient或OkHttp这样的HTTP客户端库。
  3. 使用浏览器的开发者工具
    虽然这不是一个自动化的解决方案,但你可以使用浏览器的开发者工具(如Chrome的DevTools)来手动复制cookie字符串。然后,你可以将这个字符串硬编码到你的爬虫中,或者将其存储在一个配置文件中。不过,请注意,这种方法不是长久之计,因为cookie可能会过期或变更。
  4. 使用浏览器的cookie导出功能
    某些浏览器允许你导出cookie为文本文件。然后,你可以编写一个脚本来解析这个文本文件,并提取所需的cookie。
  5. 使用第三方库
    有些第三方库专门用于处理cookie,它们可能提供了一些方便的函数来从浏览器中提取cookie或管理cookie。

对于Java,如果你选择使用Selenium来获取cookie,以下是一个基本的示例代码片段:

import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

// ... 其他必要的导入 ...

public class CookieExtractor {
    public static void main(String[] args) {
        // 设置ChromeDriver的路径(根据你的实际情况)
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");

        // 创建一个新的Chrome浏览器实例
        WebDriver driver = new ChromeDriver();

        // 导航到登录页面并执行登录(这里省略了具体的登录代码)

        // 假设你已经登录成功,现在获取cookie
        Set<Cookie> cookies = driver.manage().getCookies();

        // 将cookie转换为字符串格式,适合设置到Jsoup或其他HTTP客户端的header中
        StringBuilder cookieHeader = new StringBuilder();
        for (Cookie cookie : cookies) {
            if (cookieHeader.length() > 0) {
                cookieHeader.append("; ");
            }
            cookieHeader.append(cookie.getName()).append("=").append(cookie.getValue());
        }

        // 使用cookieHeader字符串设置到Jsoup或其他HTTP客户端的header中
        // ...

        // 关闭浏览器实例
        driver.quit();
    }
}

请注意,这个示例代码仅用于说明如何使用Selenium从浏览器中获取cookie。你需要根据你的实际情况来填充登录和设置cookie到Jsoup的部分。

 类似资料:
  • 本文向大家介绍Python爬虫爬取美剧网站的实现代码,包括了Python爬虫爬取美剧网站的实现代码的使用技巧和注意事项,需要的朋友参考一下 一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打发一下时间。之前是能在视频网站上面在线看的,可是自从广电总局的限制令之后,进口的美剧英剧等貌似就不在像以前一样同步更新了。但是,作为一个宅diao的我又怎甘心没剧追呢,所以网上随便查了一下就找到一个能用迅雷

  • 问题内容: 我想访问网站https://myoffice.bt.com的某些页面,该页面需要使用Java进行用户身份验证。我们必须先登录才能访问页面。我写了以下代码。 但是它给出了以下错误。 如果我取消注释get.setFollowingRedirects行,则会出现另一个错误。 有人能帮我一下吗?我们可以使用HttpClient进行基于表单的身份验证吗? 谢谢。 问题答案: 首先-请不要命名您的

  • 本文向大家介绍Java爬虫抓取视频网站下载链接,包括了Java爬虫抓取视频网站下载链接的使用技巧和注意事项,需要的朋友参考一下 本篇文章抓取目标网站的链接的基础上,进一步提高难度,抓取目标页面上我们所需要的内容并保存在数据库中。这里的测试案例选用了一个我常用的电影下载网站(http://www.80s.la/)。本来是想抓取网站上的所有电影的下载链接,后来感觉需要的时间太长,因此改成了抓取2015

  • 问题内容: 我正在编写一个Java程序来登录学校用来发布成绩的网站。 这是登录表单的网址:https : //ma- andover.myfollett.com/aspen/logon.do 这是登录表单的HTML: 我正在尝试使用以下代码登录: 该程序将填充用户名框,然后单击“登录”按钮,但不会填充密码框。我可以进行哪些更改以使该程序正常运行?我怀疑密码框的“ type =’password’”

  • 我想用java编写登录网站的代码。 下面是代码: 我曾在Facebook和Gmail上尝试过这段代码,但问题是它不起作用。 它一直告诉我cookies没有启用。(我使用了chrome浏览器,它们已启用)。 有没有其他方法可以实现这一点?

  • 问题内容: 我想用Java登录到一个网站。我使用的是org.apache.http,我已经写了 尽管我仍然无法登录,但它正确发送了我测试过的帖子表格。我要登录的网站是http://www.xtratime.org/forum/ 关于此的任何想法或是否有其他方法? 问题答案: 在提交页面之前,请对密码进行编码()。您应该在代码中执行相同的操作。 该属性的值与您的代码()不匹配。您应该将发布请求发送到

  • ''我想为需要登录的网站执行网页抓取。我尝试了两种不同的代码方法。我仍然无法执行登录。“”#使用BeautifulSoup在Python中开发代码: #第一种方法是从bs4导入请求导入http。cookiejar导入urllib。请求导入urllib。作语法分析 'http://127.0.0.1/orangehrm4.3.1/symfony/web/index.php/auth/login' #

  • 问题内容: 如何过滤来自网络抓取工具等的点击。不是人类的点击。 我使用maxmind.com从IP请求城市。.如果我必须支付所有点击数(包括网络抓取工具,机器人等)的话,这并不便宜。 问题答案: 有两种检测机器人的一般方法,我将它们称为“礼貌/被动”和“激进”。基本上,您必须使您的网站出现心理障碍。 有礼貌 这些是礼貌地告诉抓取工具他们不应该抓取您的网站并限制抓取频率的方法。可以通过robots.