本文最后更新于:2020年5月23日 晚上
一: 查看cookie
- 查看cookie的方法:按下F12打开开发者工具。
在network
中可以看到请求发送的信息,在返回头中,会带有服务器提供的设置cookie的信息。
在application
当中,可以看到相应网站的所有cookie,并不是只有登录信息,也不是所有的网站都有cookie。
- http协议是一个无状态的协议,用到cookie和session来保存访问中的一些状态。
cookie和session都是由服务器生成的,cookie将保存在浏览器的本地,session记录在服务端。
- cookie的几大属性
- name:名字(键),cookie的必须字段。
- value:值。
- domain:域。cookie的作用域名。
- path:表示路径。/表示当前域名下所有的网页都能使用该cookie。
domain和path结合在一起,限定了cookie的适用范围。
- expires:生命周期。限定cookie的使用时间。如果生命周期为Session的,表示只在当前这次会话中cookie有效,关闭浏览器之后立即失效。
- sessionID:本次访问的会话留下的ID号。
二: 用request操作
| 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
|
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)
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:
| for cookie in driver.get_cookies(): print(cookie)
|
2 获取
| driver.getcookie()
value = driver.get_cookie(key)
|
3 删除所有的cookie:
| driver.delete_all_cookies()
|
4 删除某个cookie:
| driver.delete_cookie(key)
|
5 通过driver.add_cookie(my_cookie)
的方法,加载cookie,在浏览器向服务端发起请求时带上cookie进行访问。
四: 设置代理ip
| 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')
|