Как увидеть, что все куки установлены, когда сделан запрос GET - PullRequest
0 голосов
/ 10 сентября 2018

Ссылка не получает всю информацию о cookie-файлах с помощью модуля запросов Python

OP видел множество cookie-файлов, установленных в Chrome, но не видит большинство этих cookie-файлов в своем коде Python Requests.Причина была в том, что «Установленные куки-файлы принадлежат другим страницам / ресурсам, вероятно, загруженным кодом JavaScript».

Это функция, которую я использую, чтобы попытаться получить куки, которые загружаются, когда 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?Т.е. как я вижу, что все куки-файлы устанавливаются при выполнении запроса GET, включая файлы с других страниц / ресурсов?

1 Ответ

0 голосов
/ 12 сентября 2018

Потребовалось немного работы, но мне удалось заставить ее работать. В основном нужны селен и хром, чтобы загружать сайт и все сторонние материалы. Одним из выходных данных является база данных 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...