专业编程基础技术教程

网站首页 > 基础教程 正文

Cookie 在爬虫中的应用

ccvgpt 2024-11-26 00:50:05 基础教程 1 ℃

导读:本文分为两部分,第一部分为 Cookie 基础概述,第二部分为 Cookie 的应用场景,及爬取多个网站数据做聚合报表的思路。

概述

Cookie 是服务器保存在浏览器里的一小部分文本信息。由服务器端生成并通过设置响应头(Set-Cookie)通知浏览器保存 Cookie。当浏览器再次请求同一域名端口(同源)就会自动发送该 Cookie 给服务器,即添加在请求头部(前提是浏览器设置为启用 Cookie)。

Cookie 在爬虫中的应用

简单地说,Cookie是一种能够让服务器把少量数据储存到客户端的硬盘或内存里,或是从客户端的硬盘里读取数据的一种技术。

Cookie 的属性

服务器向浏览器发送 Cookie 的时候,除了 Cookie 本身的内容,还有一些可选内容

  • value属性:value属性是必需的,用于指定Cookie的值。
  • expires属性:expires属性用于指定 Cookie 过期的时间。如果不设置该属性,或者设为null,Cookie只在当前会话(session)有效,浏览器窗口一旦关闭,当前 Session 结束,该 Cookie 就会被删除。
  • domain属性:domain属性指定 Cookie 的域名信息。每次请求的时候,都会根据domain来发送相应的 Cookie。
  • path属性:用来指定路径,默认的path是当前的路径。Cookie 的path属性可以有效地过滤哪些 Cookie 可以发送给服务器,哪些不发送。
  • secure属性:secure属性用来指定Cookie只能在加密协议HTTPS下发送到服务器。
  • max-age:max-age属性用来指定Cookie有效期,比如60 60 24 * 365(即一年31536e3秒)。
  • HttpOnly:HttpOnly属性用于设置该Cookie不能被JavaScript读取。

以 Google Chrome 浏览器为例,访问 chrome://settings/siteData 就可以看到所有保存的 Cookie 及每个 Cookie 具体的各项属性值。

Cookie 应用场景与思路

场景:我们在一个网站上进行账号登录时可以勾选记住账户和密码,这样下次再访问该网站就不用再次输入账号密码,这就是 Cookie 一个常见的应用场景。

特殊场景:但有的时候我们并不想在网站上通过页面操作查看数据,而是通过编写爬虫采用接口调用的方式直接获取数据做聚合。

思路:

  1. 借助 selenium 操作浏览器实现账号登录
  2. 获取 Cookie 并入库保存
  3. 使用抓包工具如 Fiddler 分析目标接口的请求方式、参数等信息
  4. 编写程序进行接口访问,请求时加上 Cookie

附:

<dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.9.0</version>
 </dependency>
// org.apache.http 请求时附带 Cookie 的 Demo
BasicCookieStore cookieStore = new BasicCookieStore();
// 装载 cookie
BasicClientCookie cookie = new BasicClientCookie(name, value);
cookie.setDomain(domain);
cookie.setPath(path);
cookie.setSecure(isSecure);
cookie.setExpiryDate(expiry);
cookieStore.addCookie(cookie);
HttpClient client = HttpClientBuilder.create().setDefaultCookieStore(cookieStore).build();
HttpGet request = new HttpGet("https://xxxxxxxxxxx/business_api/shop/homepage/realtime_overview");
HttpResponse response = client.execute(request);

最后

感谢您的阅读,如果喜欢本文欢迎关注和转发,转载需注明出处,本头条号将持续分享IT技术知识。对于文章内容有其他想法或意见建议等,欢迎提出共同讨论共同进步。

参考文章

https://blog.csdn.net/Lanhaorena/article/details/109151873

https://zhuanlan.zhihu.com/p/354762095

https://blog.csdn.net/u010084228/article/details/78269345

Tags:

最近发表
标签列表