Ссылка на не получить всю информацию о файлах cookie с помощью модуля запросов Python
OP видел, что в Chrome установлено много файлов cookie, но не видит большинство из них в своем коде запросов Python. Причина заключалась в том, что «устанавливаемые файлы cookie взяты с других страниц / ресурсов, вероятно, загружены кодом JavaScript».
Это функция, которую я использую, чтобы попытаться получить файлы cookie, которые загружаются при доступе к URL-адресу:
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
Но с помощью этой функции я вижу только файлы cookie, установленные по URL-адресу, а не другие, например рекламные файлы cookie. Учитывая эту настройку, как мне просматривать другие файлы cookie в точности так, как их видит Chrome? Т.е. как я могу увидеть, что все файлы cookie устанавливаются при выполнении запроса GET, в том числе с других страниц / ресурсов?
Потребовалось немного поработать, но мне удалось заставить его работать.
В основном требовались селен и хром для фактической загрузки веб-сайта и всего стороннего материала. Один из выходных данных - это база данных файлов cookie sqlite3 в ./chrome_dir/Default/Cookies
, которую вы можете просто получить для собственного использования.
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()