前言:爬虫大家肯定都不陌生了,但是有的网站就设计了爬虫反爬虫的措施,下面就介绍一下爬虫的思路

先来彻底了解一下cookie(笔记哈)

cookie介绍:

cookie是保存在客户机中以键值对形式存储的少量信息的文本文件(重点),是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。

定义于 RFC2109 和 2965 中的都已废弃,最新取代的规范是 RFC6265。

cookie的工作流程:

cookie 其实是存储在浏览器中的纯文本,这个文件路径也很好找,下面会详细的说明。(不要着急)

当网页要发http请求时,浏览器会先检查是否有相应的cookie,有则自动添加在request header中的cookie字段中。这些是浏览器自动帮我们做的,每次都会被浏览器自动放在http请求中。

但在 localStorage 出现之前,cookie被滥用当做了存储工具。什么数据都放在cookie中,即使这些数据只在页面中使用而不需要随请求传送到服务端。当然cookie标准还是做了一些限制的:每个域名下的cookie 的大小最大为4KB,每个域名下的cookie数量最多为20个(但很多浏览器厂商在具体实现时支持大于20个)。

cookie的分类:

cookie分为会话cookie和持久cookie,会话cookie是指在不设定它的生命周期expires时的状态,浏览器的开启到关闭就是一次会话,当关闭浏览器时,会话cookie就会跟随浏览器而销毁。当关闭一个页面时,不影响会话cookie的销毁。会话cookie就像我们没有办理积分卡时,单一的买卖过程,离开之后,信息则销毁。

持久cookie则是设定了它的生命周期expires,此时,cookie像商品一样,有个保质期,关闭浏览器之后,它不会销毁,直到设定的过期时间。对于持久cookie,可以在同一个浏览器中传递数据,比如,你在打开一个淘宝页面登陆后,你在点开一个商品页面,依然是登录状态,即便你关闭了浏览器,再次开启浏览器,依然会是登录状态。这就是因为cookie自动将数据传送到服务器端,在反馈回来的结果。持久cookie就像是我们办理了一张积分卡,即便离开,信息一直保留,直到时间到期,信息销毁。

cookie的位置

步入正题了哈

Chrome的Cookie存放位置:C:\Users\xxx\AppData\Local\Google\Chrome\User Data\Default

进入这个文件夹可以发现一个cookie文件

查阅资料说是一个sqlite数据库文件,我们通过谷歌浏览器访问的网站所产生的sookie都存在这个文本文件里,打开后就是这个样子

乱码一大片,不过仔细观察还能发现点东西的

是不是似曾相识的感觉,以百度页面为例

这点东西就是我们后面需要用的

爬取cookie

在我第一次接触爬虫的时候,是用的java爬取的数据,大概意思也就是模拟浏览器的操作去获取页面,再通过页面解析数据,这样的方法很简单,但是存在一个问题,就是页面的数据有时候异常的不准确(我也不知道是不是我的问题)

后来我就接触了python,因为爬虫学的好监狱进的早

python代码,需要者自取

import csv
import sqlite3
import urllib3
import os
import json
import sys
import base64
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
def dpapi_decrypt(encrypted):import ctypesimport ctypes.wintypesclass DATA_BLOB(ctypes.Structure):_fields_ = [('cbData', ctypes.wintypes.DWORD),('pbData', ctypes.POINTER(ctypes.c_char))]p = ctypes.create_string_buffer(encrypted, len(encrypted))blobin = DATA_BLOB(ctypes.sizeof(p), p)blobout = DATA_BLOB()retval = ctypes.windll.crypt32.CryptUnprotectData(ctypes.byref(blobin), None, None, None, None, 0, ctypes.byref(blobout))if not retval:raise ctypes.WinError()result = ctypes.string_at(blobout.pbData, blobout.cbData)ctypes.windll.kernel32.LocalFree(blobout.pbData)return result
def aes_decrypt(encrypted_txt):with open(os.path.join(os.environ['LOCALAPPDATA'],r"Google\Chrome\User Data\Local State"), encoding='utf-8', mode="r") as f:jsn = json.loads(str(f.readline()))encoded_key = jsn["os_crypt"]["encrypted_key"]encrypted_key = base64.b64decode(encoded_key.encode())encrypted_key = encrypted_key[5:]key = dpapi_decrypt(encrypted_key)nonce = encrypted_txt[3:15]cipher = Cipher(algorithms.AES(key), None, backend=default_backend())cipher.mode = modes.GCM(nonce)decryptor = cipher.decryptor()return decryptor.update(encrypted_txt[15:])
def chrome_decrypt(encrypted_txt):if sys.platform == 'win32':try:if encrypted_txt[:4] == b'x01x00x00x00':decrypted_txt = dpapi_decrypt(encrypted_txt)return decrypted_txt.decode()elif encrypted_txt[:3] == b'v10':decrypted_txt = aes_decrypt(encrypted_txt)return decrypted_txt[:-16].decode()except WindowsError:return Noneelse:raise WindowsError
def get_cookies_from_chrome(domain):sql = f'SELECT name, encrypted_value as value FROM cookies where host_key like "%{domain}%"'filename = os.path.join(os.environ['USERPROFILE'], r'AppData\Local\Google\Chrome\User Data\default\Cookies')con = sqlite3.connect(filename)con.row_factory = sqlite3.Rowcur = con.cursor()cur.execute(sql)cookie = ''for row in cur:if row['value'] is not None:name = row['name']value = chrome_decrypt(row['value'])if value is not None:cookie += name + '=' + value + ';'return cookie
if __name__ == '__main__':domain = 'XXXX'   # 目标网站域名cookie = get_cookies_from_chrome(domain)print(cookie)

上面就是获取浏览器cookie的代码(防止利用cookie恶意获取数据导致ip被封,所以用的时候慎重啊)

//爬取  域名为  www.baidu.com
COOKIE_SESSION=165343_0_2_2_0_1_1_0_2_1_1_0_0_0_0_0_0_0_1634191707%7C2%230_0_1634191707%7C1;BD_CK_SAM=1;H_PS_645EC=5a9bnPpiFce%2FLUIneAaf4N2S8mBDccB8L8FVQWDT4G%2FvjC2RXTts8T2ry2c;BD_HOME=1;BD_UPN=12314753;


这个是爬取出来的结果,差异性可以对照一下,具体使用的时候需要自己解析一下

目前对于高版本谷歌浏览器已经无法获取cookie,可前往查看 terminal data插件

谢谢捧场(= ̄ω ̄=)喵了个咪

python爬虫之获取谷歌浏览器所有cookie相关推荐

  1. Python爬虫实战——获取电影影评

    Python爬虫实战--获取电影影评 前言 第三方库的安装 示例代码 效果演示 结尾 前言 使用Python爬取指定电影的影评, 注意:本文仅用于学习交流,禁止用于盈利或侵权行为. 操作系统:wind ...

  2. python爬虫(14)获取淘宝MM个人信息及照片(中)

    python爬虫(14)获取淘宝MM个人信息及照片(中) python爬虫(14)获取淘宝MM个人信息及照片(上) python爬虫(14)获取淘宝MM个人信息及照片(下)(windows版本) 在上 ...

  3. python爬虫(14)获取淘宝MM个人信息及照片(上)

    python爬虫(14)获取淘宝MM个人信息及照片(上) python爬虫(14)获取淘宝MM个人信息及照片(中) python爬虫(14)获取淘宝MM个人信息及照片(下)(windows版本) 网上 ...

  4. python 爬虫入门——获取页面代码

    常见的爬虫有很多:requests库,lxml库,re库,bs4库,urllib库等. 因为urllib是python自带的库,而包含urllib用法的requests库其实还挺好用的(各有各的好,这 ...

  5. python爬虫系列(1.3-关于cookie的认识)

    一.关于http无状态的认识 在网站中,http请求是无状态的,也就是说第一次与服务器连接后并且接收到服务器的返回值的时候,就断开连接,等第二次连接的时候,又是一个新的连接,服务器并不知道之前连接过. ...

  6. python爬虫如何从一个页面进入另一个页面-Python爬虫如何获取页面内所有URL链接?本文详解...

    如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL. 什么是Beautiful Soup ...

  7. [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒

    前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(I ...

  8. 应用Python爬虫技术获取福彩历史数据

    大鸟哥平时研究彩票随机数据,肯定需要有历史数据作为支撑,那么如何获取历史数据呢?这里就应用了Python的爬虫技术,可以从一些允许的网站爬取历年来的双色球.3D等各种彩票的开奖信息,然后转化成为想要的 ...

  9. Python+爬虫技术获取斗鱼直播图片(整理)

    核心内容: 1.爬虫的基本原理 2.利用Python爬取数据的方法(使用urllib爬取数据) 3.从斗鱼直播平台爬取图片 最近因为工作的原因,要利用爬虫的相关技术,获取html网页相关的数据,特意总 ...

  10. Python 爬虫:获取 JS 动态内容——应用宝搜索应用

      本内容主要介绍如何获取网页中 JS 动态生成的内容. 文章目录 1.1 Ajax 异步加载生成网页内容 1.2 从网页响应中找到 JS 脚本返回的数据 1.2.1 找到 JS 请求的数据接口 1. ...

最新文章

  1. 内核同步机制——原子操作
  2. exports、module.exports和export、export default到底是咋回事
  3. webService学习8:wsdl文档解释
  4. mysql 事件 day hour_Mysql事件调度器(Event Scheduler)
  5. 烙饼啊烙饼{转自ITEO
  6. libcurl使用方法
  7. hibernate SQLQuery实践指南
  8. pytorch将Tensor转为list
  9. 在java中使用ffmpeg将amr格式的语音转为mp3格式
  10. PyCharm 的初始设置
  11. 个人源码管理,SVN本地化
  12. 客户端考试之渐进增强与优雅降级
  13. Env:Cscope安装与配置
  14. Android Sqite数据库 9
  15. win7安装英语语言包
  16. SEO学习笔记一:Google搜索引擎背后的运作模式
  17. Python之scrapy实现的爬虫,百度贴吧的自动签到和自动发帖、自动回帖
  18. EFF希望NSA销毁长达14年的电话监控记录
  19. Linux智能家居项目
  20. 读书有益——》从你的全世界路过

热门文章

  1. 常见中文停用词表整理
  2. 请详细说下你对 vue 生命周期的理解?
  3. JMeter工具:场景设计,场景设置,场景运行,性能参数配置,测试监控
  4. Elasticsearch关闭自动日期检测
  5. 英媒:俄黑客靠窃密跻身“成功企业家” 被捕时昏迷
  6. ps界面为啥突然变大了_PS修图教程,如何把把照片变得更有质感
  7. WKWebView OC与JS交互
  8. 修改el-table表头高度 表格高度 行鼠标悬停颜色
  9. 补遗篇之单行道标志const
  10. php仿qq空间网页源码,516 仿QQ空间网页头部代码