cookie

Cookie 是指某些网站服务器为了辨别用户身份和进行Session跟踪,而储存在用户浏览器上的文本文件,Cookie可以保持登录信息到用户下次与服务器的会话。/p>

cookie如何工作

当你第一次访问某个网站的时候,服务器会给你颁发一个特定的cookie,之后你每次访问这个站点,你发送的请求头里都会带上相应的cookie,这样服务器便知道这俩请求是同一个客户发送的。

白话:登录后服务会生成一个cookie每次访问这个网站时浏览器都会带上这个cookie,就会自动登录账号

 

示例网站:https://www.douban.com/

 

方法一

登录

使用浏览器的抓包找到豆瓣网的登录接口,利用requests模块post提交参数

cookie登录 python cookie登录入口_存到文件

获取登录cookies

使用cookies登录豆瓣网

cookie登录 python cookie登录入口_存到文件

cookie登录 python cookie登录入口_存到文件_03

import requests
from requests.cookies import RequestsCookieJar

#豆瓣登录地址
url2 = 'https://www.douban.com'
url = 'https://accounts.douban.com/j/mobile/login/basic'

data = {
    #未知
    'ck': '',
    #账号
    'name': '185********',
    #密码
    'password': '*********',
    #是否下次自动登录
    'remember': True,
    #未知
    'ticket': ''
}
r = requests.post(url, data=data)
#登录cookie
c = r.cookies.get_dict()
r2 = requests.get(url2, cookies=c)
#打印登录后的网页,如显示自己的用户名才登陆成功
print(r2.text)

使用cookies获取登录后的界面

 

方法二

使用requests里的session对象,这个方法能够帮我们在跨请求中保持一些参数,而且所有请求之间保持一个cookies

cookie登录 python cookie登录入口_存到文件

session方法

 

方法三

使用selenium包中webdriver(网页自动化测试)登录输入账号密码,登录后获取cookies

cookie登录 python cookie登录入口_存到文件

cookie登录 python cookie登录入口_存到文件_03

import requests
from selenium import webdriver

#豆瓣登录地址
# url_address = 'https://accounts.douban.com/j/mobile/login/basic'
url = 'https://www.douban.com'

chrome = webdriver.Chrome('F:/Program Files (x86)/webdriver/chromedriver.exe')
chrome.get(url)
#切换到登录界面的html
chrome.switch_to.frame(0)
#使用xpath获取到账号密码登录并点击
chrome.find_element_by_xpath('//li[@class="account-tab-account"]').click()
#使用xpath获取到账号输入框并输入账号
chrome.find_element_by_xpath('//input[@id="username"]').send_keys('185********')
#使用xpath获取密码输入框并输入密码
chrome.find_element_by_xpath('//input[@id="password"]').send_keys('********')
#点击登录按钮
chrome.find_element_by_xpath('//div[@class="account-form-field-submit "]').click()
#接收cookies并打印
cookies = chrome.get_cookies()
print(cookies)

webdriver

selenium

三种获取利用cookies登录方式

1. 前两种需要分析登录接口,比较麻烦,第三种获取登录cookies比较简单

2. 能获取到登录cookies之后尽量少调试,调试多了账号容易被锁定,这里就可以把一次登录的cookies保存到文件,就可以不用每次调试就重新获取一次cookies