网站首页 > 基础教程 正文
导读:本文分为两部分,第一部分为 Cookie 基础概述,第二部分为 Cookie 的应用场景,及爬取多个网站数据做聚合报表的思路。
概述
Cookie 是服务器保存在浏览器里的一小部分文本信息。由服务器端生成并通过设置响应头(Set-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 一个常见的应用场景。
特殊场景:但有的时候我们并不想在网站上通过页面操作查看数据,而是通过编写爬虫采用接口调用的方式直接获取数据做聚合。
思路:
- 借助 selenium 操作浏览器实现账号登录
- 获取 Cookie 并入库保存
- 使用抓包工具如 Fiddler 分析目标接口的请求方式、参数等信息
- 编写程序进行接口访问,请求时加上 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
- 上一篇: 55个JS代码让你轻松当大神
- 下一篇: 工作中,前端开发要看项目,怎么查看别人的js项目代码
猜你喜欢
- 2024-11-26 工作中,前端开发要看项目,怎么查看别人的js项目代码
- 2024-11-26 55个JS代码让你轻松当大神
- 2024-11-26 操作cookie
- 2024-11-26 9个原生js库助力前端开发,你都用过吗?
- 2024-11-26 Selenium4+Python3系列(七) Iframe、常见控件、JS、Cookie操作
- 2024-11-26 浅谈JavaScript的用处
- 2024-11-26 Web安全:XSS怎么实现?Cookie 劫持如此简单,你的网站安全吗?
- 2024-11-26 Cookies和Session的区别和理解
- 2024-11-26 cookie是什么?有什么用?cookie详解,一篇文章彻底搞懂cookie
- 2024-11-26 python+selenium文件上传,Cookie操作,调用 JS,窗口截图
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- deletesql (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)