Как отключить обработку файлов cookie с помощью библиотеки запросов Python?

Когда я использую запросы для доступа к URL-адресу, cookie-файлы автоматически отправляются обратно на сервер (в следующем примере запрошенный URL-адрес устанавливает некоторые значения cookie и затем перенаправляет на другой URL-адрес, отображающий сохраненный файл cookie)

>>> import requests >>> response = requests.get("http://httpbin.org/cookies/set?k1=v1&k2=v2") >>> response.content '{\n "cookies": {\n "k2": "v2",\n "k1": "v1"\n }\n}' 

Можно ли временно отключить обработку файлов cookie так же, как вы устанавливаете Chrome или Firefox, чтобы не принимать файлы cookie?

Например, если я получаю доступ к указанному выше URL-адресу с Chrome с отключенной обработкой файлов cookie, я получаю то, что я ожидал:

 { "cookies": {} } 

  • Есть ли библиотека json python для преобразования json в объекты модели, похожие на google-gson?
  • В чем разница между массивами numpy и матрицами? Какой из них я должен использовать?
  • Как вставить массивы в базу данных?
  • Как изменить цвет кнопки с помощью tkinter
  • Печать в Duplexpage текстового документа
  • Отдельное изображение текста в виде символа компонента
  • ipython ноутбук на Linux VM работает matplotlib интерактивный с nbagg
  • Заказ ManyToManyField, который можно использовать в полях
  • 4 Solutions collect form web for “Как отключить обработку файлов cookie с помощью библиотеки запросов Python?”

    Вы можете сделать это, указав политику cookie, чтобы отклонить все файлы cookie:

     from http import cookiejar # Python 2: import cookielib as cookiejar class BlockAll(cookiejar.CookiePolicy): return_ok = set_ok = domain_return_ok = path_return_ok = lambda self, *args, **kwargs: False netscape = True rfc2965 = hide_cookie2 = False 

    (Обратите внимание, что API http.cookiejar требует, чтобы вы определили кучу атрибутов и методов, как показано.)

    Затем установите политику файлов cookie на сеансе запросов:

     import requests s = requests.Session() s.cookies.set_policy(BlockAll()) 

    Теперь он не будет хранить или отправлять файлы cookie:

     s.get("https://httpbin.org/cookies/set?foo=bar") assert not s.cookies 

    В стороне, если вы посмотрите на код, удобные методы в пакете requests (в отличие от объектов Session каждый раз Session новый Session . Поэтому файлы cookie не сохраняются между отдельными вызовами requests.get . Однако, если первая страница устанавливает куки, а затем выдает перенаправление HTTP, на целевой странице будут отображаться файлы cookie. (Это то, что происходит с HTTPBin /cookies/set call, который перенаправляет на /cookies .)

    Поэтому, в зависимости от того, какое поведение вы хотите перенаправить, вам может не понадобиться ничего особенного. Для сравнения:

     >>> print(requests.get("https://httpbin.org/cookies/set?foo=bar").json()) {'cookies': {'foo': 'bar'}} >>> print(requests.get("https://httpbin.org/cookies").json()) {'cookies': {}} >>> s = requests.Session() >>> print(s.get("https://httpbin.org/cookies/set?foo=bar").json()) {'cookies': {'foo': 'bar'}} >>> print(s.get("https://httpbin.org/cookies").json()) {'cookies': {'foo': 'bar'}} >>> s = requests.Session() >>> s.cookies.set_policy(BlockAll()) >>> print(s.get("https://httpbin.org/cookies/set?foo=bar").json()) {'cookies': {}} >>> print(requests.get("https://httpbin.org/cookies").json()) {'cookies': {}} 
     >>> import mock >>> import requests >>> with mock.patch.object(requests.cookies.RequestsCookieJar, 'update', lambda *args, **kwargs: 0): ... r = requests.get("http://httpbin.org/cookies/set?k1=v1&k2=v2")#, cookies=cj) ... r.content ... '{\n "cookies": {}\n}' >>> r = requests.get("http://httpbin.org/cookies/set?k1=v1&k2=v2") >>> r.content '{\n "cookies": {\n "k2": "v2",\n "k1": "v1"\n }\n}' 

    Вы возвращаете "k2": "v2", "k1": "v1" потому что они отправляются в параметрах GET. Если вы выполните второй запрос, вы увидите, что вы не отправляете файлы cookie. Если вы не используете requests.Session Сессионные файлы cookie автоматически не обрабатываются в клиенте, и вы должны явно передавать dict или CookieJar с каждым запросом.

     In [17]: r = requests.get("http://httpbin.org/cookies/set?k1=v1&k2=v2") In [18]: r.content Out[18]: '{\n "cookies": {\n "k2": "v2",\n "k1": "v1"\n }\n}' In [20]: r.cookies.get_dict() Out[20]: {} In [21]: r = requests.get("http://httpbin.org/cookies") In [22]: r.content Out[22]: '{\n "cookies": {}\n}' 
     class BlockAll(CookiePolicy): def set_ok(self, cookie, request): return False session.cookies.policy = BlockAll() 
    Python - лучший язык программирования в мире.