python学习之路 二:cookie

本文最后更新于:2020年5月23日 晚上

一: 查看cookie

  1. 查看cookie的方法:按下F12打开开发者工具。
    network中可以看到请求发送的信息,在返回头中,会带有服务器提供的设置cookie的信息。
    application当中,可以看到相应网站的所有cookie,并不是只有登录信息,也不是所有的网站都有cookie。
  2. http协议是一个无状态的协议,用到cookie和session来保存访问中的一些状态。
    cookie和session都是由服务器生成的,cookie将保存在浏览器的本地,session记录在服务端。
  3. cookie的几大属性
    • name:名字(键),cookie的必须字段。
    • value:值。
    • domain:域。cookie的作用域名。
    • path:表示路径。/表示当前域名下所有的网页都能使用该cookie。
      domain和path结合在一起,限定了cookie的适用范围。
    • expires:生命周期。限定cookie的使用时间。如果生命周期为Session的,表示只在当前这次会话中cookie有效,关闭浏览器之后立即失效。
    • sessionID:本次访问的会话留下的ID号。

二: 用request操作

2.1 直接在headers中使用cookie

1
2
3
4
5
6
7
8
9
10
11
from urllib import request
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36',
'Cookie': '按F12,在network中查看Cookie信息,复制进来即可'
}
url = 'http://www.renren.com/880151247/profile'

req = request.Request(url, headers=headers)
resp = request.urlopen(req)
with open('renren.html', 'w', encoding='utf-8') as fp:
fp.write(resp.read().decode('utf-8'))

2.2 cookie的文件存储与读取

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 保存cookie到本地:
# 保存cookie到本地,可以使用cookiejar的save方法,并且需要指定一个文件名:

from urllib import request
from http.cookiejar import MozillaCookieJar

cookiejar = MozillaCookieJar("cookie.txt")
handler = request.HTTPCookieProcessor(cookiejar)
opener = request.build_opener(handler)

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'
}
req = request.Request('http://httpbin.org/cookies',headers=headers)

resp = opener.open(req)
print(resp.read())
cookiejar.save(ignore_discard=True,ignore_expires=True)


# 从本地加载cookie:
# 从本地加载cookie,需要使用cookiejar的load方法,并且也需要指定方法:

from urllib import request
from http.cookiejar import MozillaCookieJar

cookiejar = MozillaCookieJar("cookie.txt")
cookiejar.load(ignore_expires=True,ignore_discard=True)
handler = request.HTTPCookieProcessor(cookiejar)
opener = request.build_opener(handler)

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'
}
req = request.Request('http://httpbin.org/cookies',headers=headers)

resp = opener.open(req)
print(resp.read())

三: 用selenium操作

1 获取所有的cookie:

1
2
for cookie in driver.get_cookies():
print(cookie)

2 获取

1
2
3
4
5
# 获取cookie
driver.getcookie()

# 根据cookie的key获取value:
value = driver.get_cookie(key)

3 删除所有的cookie:

1
driver.delete_all_cookies()

4 删除某个cookie:

1
driver.delete_cookie(key)

5 通过driver.add_cookie(my_cookie)的方法,加载cookie,在浏览器向服务端发起请求时带上cookie进行访问。

四: 设置代理ip

1
2
3
4
5
6
7
8
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=http://110.73.2.248:8123")
driver_path = r"D:\chromedriver.exe"
driver = webdriver.Chrome(executable_path=driver_path,chrome_options=options)

driver.get('http://httpbin.org/ip')

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!