发出GET请求时如何查看所有正在设置的cookie

时间:2018-09-10 03:30:21

标签: python-3.x cookies python-requests

引用not getting all cookie info using python requests module

OP看到许多在Chrome上设置的cookie,但在他的Python Requests代码中看不到大多数cookie。给出的原因是“正在设置的Cookie来自其他页面/资源,可能是由JavaScript代码加载的。”

这是我用来尝试获取访问URL时加载的cookie的功能:

from requests import get
from requests.exceptions import RequestException
from contextlib import closing

def get_cookies(url):
    """
    Returns the cookies from the response of `url` when making a HTTP GET request.
    """
    try:
        s = Session()
        with closing(get(url, stream=True)) as resp:
            return resp.cookies

    except RequestException as e:
        print('Error during requests to {0} : {1}'.format(url, str(e)))
        return None

但是使用此功能,我只能看到由URL设置的cookie,而看不到其他诸如广告cookie的cookie。有了这个设置,我如何查看其他Cookie,就像Chrome看到的一样?即发出GET请求时,如何查看所有cookie,包括其他页面/资源中的cookie?

1 个答案:

答案 0 :(得分:0)

做了一些工作,但是我设法使它工作了。 基本上需要硒和铬才能真正加载网站和所有第三者的东西。输出之一是./chrome_dir/Default/Cookies中的cookie的sqlite3数据库,您可以自己获取该数据库。

from selenium import webdriver
import sqlite3

def get_cookies(url):
    """
    Returns the cookies from the response of `url` when making a HTTP GET request.
    """
    co = webdriver.ChromeOptions()
    co.add_argument("--user-data-dir=chrome_dir")    # creates a directory to store all the chrome data
    driver = webdriver.Chrome(chrome_options=co)
    driver.get(url)
    driver.quit()

    conn = sqlite3.connect(r'./chrome_stuff/Default/Cookies')
    c = conn.cursor()
    c.execute("SELECT * FROM 'cookies'")

    return c.fetchall()