虚拟手机浏览器cookies在哪比特手机浏览器cookies在哪的cookies参数怎么导出?

我们在浏览器登录网站后如果换了一台新的设备就需要重新登录账号,但是这样就会导致账号被风控,需要重新输入账号密码甚至接收邮箱及手机号验证码。那么有什么方法和软件可以直接用买来的cookie(简称CK)账号导入到浏览器来实现免密自动登录呢?下面就以候鸟浏览器为例,给大家演示一下cookie的导入导出和删除清空。工具/原料:Windows7以上操作系统的电脑候鸟浏览器Cooke账号方法/步骤:1、候鸟浏览器任意环境列表处点击鼠标右键,在弹出的菜单中点击“导入cookie”;2、弹出“导入cookie”操作面板,导入cookie支持“文件导入”和“剪贴板导入”,选择任意方式即可,文件导入要选择包含cookie代码的txt文件,然后点击下方“导入cookie”按钮;3、下方提示“您的COOKIE数据以导入成功”即完成导入;4、如果使用“剪贴板导入”的方式,将cookie代码剪切或粘贴到红框内,点击下方“剪贴板导入Cookie”;5、下方提示“您的COOKIE数据以导入成功”即完成导入。6、导出cookie:候鸟浏览器任意环境列表处点击鼠标右键,在弹出的菜单中点击“导出cookie”;7、弹出“导出cookie”操作面板,选择一个文件夹,勾选是否将导出数据进行加密,然后点击下方“导出Cookie”按钮。8、就会在刚刚选择的文件夹里看到一个导出的“cookie.txt”文件;9、下方是加密后的cookie代码。10、清空删除cookie:候鸟浏览器任意环境列表处点击鼠标右键,在弹出的菜单中点击“清空cookie”;2、直到屏幕下方出现“Cookie数据已清空”的提示,即清空成功。注意事项:在导入cookie之前先登录候鸟浏览器客户端,创建一个新的环境,保证这个环境中的cookie数据是空的。导入成功之后在打开网站就会发现你的账号已经是登录状态了。
在用浏览器进行网页访问时,会向网页所在的服务器发送http协议的GET或者POST等请求,在请求中除了指定所请求的方法以及URI之外,后面还跟随着一段Request Header。Request Header的内容主要用于描述本地信息,如所用的浏览器、所用的系统、语言、所能接受的返回数据的编码格式等,其中有一个非常重要的Header项就是Cookie,Cookie可以说是网站的自定义数据集。由于服务器端无法无法控制本地(浏览器)的内存数据,但服务器又有必要搜集与自己所提供的服务相关的本地状态信息,而Cookie就承载了这一功能,目的是记录用户在网站的状态信息。在用python对网页进行访问的时候,如果希望得到与在网页端相同的结果,用该网页在浏览器中所保留的Cookie作为python的请求Cookie是一个比较值得推荐的做法。本文主要讨论如何提取浏览器保存在本地的Cookie,所用的浏览器为Chrome。Cookie文件 Chrome用sqlite来维护Cookie,Cookie中的信息被保存在sqlite数据库当中,如果系统为Windows,那么数据库文件所在的位置为:
C:\Users\{UserName}\AppData\Local\Google\Chrome\User Data\Default\Cookies
其中该路径的{UserName}是当前系统的用户名。username = os.environ.get('USERNAME')
cookie_file = 'C:\Users\{UserName}\AppData\Local\Google\Chrome\User Data\Default\Cookies'.format(UserName=username)
Cookie表单 通过Cookie文件路径,我们可以建立数据库连接,然后提取出数据库的信息。
con = sqlite3.connect(cookie_file)
cursor = con.cursor()
数据库中的cookies表就是用于保存浏览器Cookie的。提取表中各列的名称cursor.execute('SELECT * FROM cookies')
for description in cursor.description:
print(description[0])
各字段的描述如下:creation_utc:Cookie产生的utc时间host_key:Cookie所在的网页(domain)name:Cookie名称value:不加密的Cookie值,由于Chrome几乎都会对Cookie值加密后再存储,因此这个字段基本都是空的path:如果服务器需要设置Cookies,那么服务器在响应浏览器请求的时候会返回Set-Cookie的响应,并且附带所要设置的Cookies,这里的path的默认值就是返回Set-Cookie的那个页面。path以'/'为开头。expires_utc:Cookie的有效期限is_secure:指示在浏览器与服务器之间传输该Cookie时需要采用加密通道,即httpsis_httponly:当设置了该值为1时,在浏览器上运行的JS不能读取到该Cookie,该Cookie只能由http请求读取。这个标记主要目的是提高Cookie的安全性,防止无关的JS脚本窃取Cookie中的重要信息last_access_utc:上一次访问到该Cookie的时间has_expires:Cookie的期限是否有效is_persistent:如果expires_utc不为0,那么这个值为1priority:Cookie的删除优先级,Cookie也有存储上限的,当超出上限则需要删除,此时会有特定的删除策略来删除不同priority的Cookieencrypted_value:加密后的Cookie值firstpartyonly:first-party以及third-party是HTTP Request的一种分类,first-party指的是当前所发送的HTTP请求的URL跟浏览器地址栏上的URL一致;否则就是third-party。如我们平常看到的很多网页上的图片或者广告,其实都是third-party request。无论first-party或者third-party,都是HTTP请求,在往服务器发送请求的时候会带上host为该URL的Cookies,不过如果一个Cookie指定了firstpartyonly,那么如果请求为thrid-party,在发送请求的时候不会附带该Cookie。以上面所说的网页中的图片为例子,如果该图片URL的Cookie设定为firstpartyonly,在浏览网站时,通过third-party访问了该图片所在的URL,就不会发送该Cookie。 上述字段中有些是只有浏览器才会用到的,这里没有必要用上,因此我们仅需要提取一些必要字段。
domain_name = 'blog.csdn.net'
cursor.execute('SELECT host_key, name, value, path, expires_utc, is_secure, encrypted_value '
'FROM cookies WHERE host_key like "%{}%";'.format(domain_name))
解密Cookie我们前面说过,Chrome在对Cookie的值保存之前会进行加密处理,并保存在数据库的encrypt_value字段中。在Windows系统中,Cookie加密采用的是系统提供的函数CryptProtectData,我们在解密的时候也需要调用系统提供的函数CryptUnprotectData[1]。解密的Windows用户必须与加密的用户一致才能成功解密。不过系统提供的是C函数,python通过ctypes库来实现对C函数的调用。CryptUnprotectData需要7个参数:pDataIn:一个指向DATA_BLOB结构体的指针,该DATA_BLOB内需存放被解密的数据。DATA_BLOB结构体内含两个成员:cbData,数据的所占用的字节数;pbData,指向数据所在内存的指针。ppszDataDescr:描述该加密数据的信息,如果在进行加密操作的时候添加了描述,那么在解密的时候也能得到该描述信息。获得该描述后需要调用系统提供的LocalFree释放ppszDataDescr指向的内存。如果不需要,设为NULL即可。pOptionalEntropy:一个指向含有密钥DATA_BLOB的指针,不过在进行Cookie加密时通常不会用到。pvReserved:保留参数,设为NULL即可。pPromptStruct:解密是一个有安全风险的操作,可能需要弹出风险提升,如果不需要弹出提示设置为NULL即可。dwFlags:安全相关的标志,设置为0即可。pDataOut:一个指向解密后的数据的DATA_BLOB,获得解密数据后需要调用系统提供的LocalFree函数释放pbData指向的内存。class DATA_BLOB(ctypes.Structure):
_fields_ = [("cbData", ctypes.wintypes.DWORD),
("pbData", ctypes.POINTER(ctypes.c_char))]
def __init__(self, data):
string = str(data)
self.cbData = len(string)
self.pbData = ctypes.create_string_buffer(string)
def descrypt(cipher):
#parameters
DataIn = DATA_BLOB(cipher)
Descr = ctypes.c_wchar_p()
DataEntropy = DATA_BLOB('')
Reserved = None
PromptStruct = None
CRYPTPROTECT_UI_FORBIDDEN = 0x00
DataOut = DATA_BLOB('')
#win call
ret = ctypes.windll.crypt32.CryptUnprotectData(ctypes.byref(DataIn),
Descr,
ctypes.byref(DataEntropy),
Reserved,
PromptStruct,
CRYPTPROTECT_UI_FORBIDDEN,
ctypes.byref(DataOut)
)
if not ret:
raise RuntimeError("failed to descrypt")
buf = ctypes.create_string_buffer(int(DataOut.cbData))
ctypes.memmove(buf, DataOut.pbData, DataOut.cbData)
ctypes.windll.kernel32.LocalFree(Descr)
ctypes.windll.kernel32.LocalFree(DataOut.pbData)
return buf.value
创建Cookie并填充CookieJar python并不推荐我们去自行创建Cookie,因为作为用户通常不需要去改动,甚至没有必要知道Cookie的内容,不过此处出于特殊的需求,需要通过在Cookie数据库中获取的数据来创建Cookie。
首先我们来简单了解一下Set-Cookie。我们知道Cookie都是服务器为浏览器设置的,设置Cookie是通过服务器返回的Response Header,如果header中包含有Set-Cookiie相关字段,则能进行Cookie的设置。http.cookiejar.Cookie的初始化需要提供18个参数:version:比较老版本的Cookie(如rfc2109,已淘汰)要求Cookie必须有Version字段,不过较新的版本(如rfc6265)的Cookie去掉了这一字段,因此这里填0就行。name:Cookie名称value:Cookie值port:http端口,指定了该字段的Cookie只能发送到服务器的指定端口,只有rfc2965中的Set-Cookie2才用到该字段,rfc2695是一个已淘汰的版本,这里填None就行。port_specified:是否有指定端口,同样是已淘汰的参数,填False。domain:服务器域名domain_specified:是否指定了服务器域名domain_initial_dot:服务器域名是否以"."作为开头path:服务器路径path_specified:是否指定了服务器路径secure:是否采用安全通道expires:Cookie期限discard:是否为一次性Cookie,同上方的is_persistent,填Falsecomment:Cookie注释,填Nonecomment_url:Cookie注释所在的URL,填Nonerest:存储该Cookie的一些非标准的属性,填{}rfc2109:是否为rfc2109标准,默认值为Falsecj = http.cookiejar.CookieJar()
for row in cursor.fetchall():
host, name, value, path, expires, secure, encrypted_value = row[:]
data = descrypt(encrypted_value)
c = http.cookiejar.Cookie(0, name, data, None, False, host, host.startswith('.'), host.startswith('.'),
path, True, secure, expires, False, None, None, {})
cj.set_cookie(c)
其中比较重要的domain相关参数请查看:rfc2109的Interpreting Set-Cookie、Rejecting Cookies以及rfc6265的The Domain Attribute、Storage Model。Reference:Client Side HTTP Cookie Securitycookiejar.Cookie 注: 本文转自[《python提取浏览器Cookie》](https://www.cnblogs.com/TaigaCon/p/9721697.html)
作者:博客园 TaigaComplex求职中
一、什么是 Cookie?Cookie 是通过浏览器将服务器返回的数据保存在本地的一小块数据(一般小于4kb)。当浏览器发送请求且浏览器存在 Cookie 时,浏览器会自动在请求头携带上 Cookie 数据。引入 Cookie 的意义是因为 HTTP 的请求是无状态的,如:浏览器发出的请求服务器没办法区分浏览器用户身份以及用户的相关操作状态(可以通过 Cookie 传递这些信息)。最开始 Cookie 被作为唯一的存储手段,但是因为浏览器的每次请求都会携带上 Cookie,会带来额外的开销,而且存储量比较小,所以后来浏览器推出了新的 Api(web stoeage Api和 indexedDb)。二、Cookie 主要使用在以下场景会话状态管理(如用户登录状态、及其他需要记录的信息)个性化设置(如用户自定义设置)浏览器追踪行为(如追踪分析用户行为)三、创建 Cookie1.浏览器自动创建当服务器收到 HTTP 请求时,服务器可以在响应头里设置一个 Set-cookie 选项,浏览器接收到响应后会自动保存下 Cookie,之后浏览器对该服务器的每一次请求中都会通过请求头把 Cookie 信息发送给服务器。通过以下 node 版本代码案例(通过 req.cookie 设置 cookie,而不是设置请求头的 Set-cookie字段)当请求了 ‘/’ 路径 Cookie 就会保存如下图信息。后面请求其他 path (如:/login)时在以下代码中都能通过 ‘req.headers.cookie’ 打印出请求携带的 Cookie 信息(即为浏览器保存的 Cookie)。测试案例(express 版):const express = require(‘express’)let app = express();app.get(‘/’,(req,res)=>{console.log(req.headers.cookie)res.cookie(‘token’,‘dsafdsfd453542scdsfd’)res.send(‘path is /’)});app.get(‘/login’,(req,res)=>{console.log(req.headers.cookie)res.send(‘path is /login’)});app.listen(3000,()=>{console.log(‘express服务已经启动~~~’);})1234567891011121314访问’/'浏览器设置的 Cookie:2.通过 js 设置 Cookie (也可以设置过期时间、域名、路径等)注:字符串中不能包含 HttpOnly 标识。可以包含expires、max-age、domain、path、secure。基本用法:// 可以直接在浏览器控制台输入进行测试document.cookie = “token=dsagsdshj43sfs”;12四、Cookie 的设置详解1.过期时间设置(Expires 字段)设置 Cookie 30s 后过期// 30s 后浏览器 cookie 自动清空res.cookie(‘token’,‘dsafdsfd453542scdsfd’,{expires:new Date(Date.now() + 30*1000)})122.设置域(domain),指定 cookie 在哪个域下可以被接受注:如果不指定 domain 则默认是当前源(origin),但不包括子域名。如果指定了 Domain 则一般包含子域名(二级域名、三级域名)res.cookie(‘token’,‘dsafdsfd453542scdsfd’,{domain:‘localhost’})13.设置路径(path),指定 cookie 在当前主机下哪些路径可以接受 Cookie设置在 /login 下接受 Cookie。(只要是/login开头的都能接受,如:/login/user 等),此时 ‘/’ 下是没有 Cookie 的res.cookie(‘token’,‘dsafdsfd453542scdsfd’,{path:‘/login’})14.设置不能通过 javascript 访问 Cookie。(HttpOnly字段)不能通过 document.cookie 访问res.cookie(‘token’,‘dsafdsfd453542scdsfd’,{httpOnly:true})15.设置一段时间过期。(Max-Age)设置 Cookie 20s 后过期res.cookie(‘token’,‘dsafdsfd453542scdsfd’,{maxAge:20*1000})16.设置 secure 字段标记为 secure 的 Cookie 只应通过被 Https 协议加密过的请求发送给服务端。(通过 https 创建的 Cookie 只能通过 Https 请求将 Cookie 携带到服务器,通过 http 无法拿到 Cookie)res.cookie(‘token’,‘dsafdsfd453542scdsfd’,{secure:true})17.设置 someSite ,它有三个可选值 None、strict、Lax首先了解下什么是跨站请求?比如说有 A、B两个网站,其中A站请求会产生 Cookie,且后续访问请求需携带回 Cookie(身份认证),如果在B网站通过链接的形式访问A站资源这个就叫跨站。这种情况访问成功与否会根据 Cookie 设置的 someSite 而定。someSize:None: 浏览器在同站请求、跨站请求下都会发送 CookiessomeSize:Strict: 浏览器只会在相同站点下发送 CookiessomeSize:Lax: 与 strict 类似,不同的是它可以从外站通过链接导航到该站。五、通过 js 访问 Cookie注:设置了 HttpOnly 标志的 Cookie 无法访问document.cookie1六、cookie 分类会话 Cookie,指的是没有设置 Expires 和 max-Age 标示的 Cookie,关闭浏览器后就会被清空。包含了 Expire 或 max-Age 的标志,清空的时间由其设置的时间而定。总结Cookie 更多的用途是用在身份认证来保证网站资源的安全性,而不是大数据量的本地数据存储。大数据量本地存储方案取而代之的是 webstorage和indexedDB。设置 Cookie 过期时间(Expires、max-Age标志)有助于防止会话固定攻击。设置 httpOnly 有助于缓解**跨站点脚本(XSS)**攻击。设置 SameSite 可以阻止 跨站请求伪造攻击(CSRF)。

我要回帖

更多关于 手机浏览器cookies在哪 的文章