Я пытаюсь использовать cookie из браузера механизации, который я использую для входа на сайт в сеансе запросов, но всякий раз, когда я делаю запрос с сеанса, я получаю TypeError ,TypeError для cookielib CookieJar cookie в запросах Session
Я сделал удобный класс для использования АНИ подвергается сайтом (большая часть фактически полезного кода удаляется, это маленький пример):
from __future__ import absolute_import, division, print_function, unicode_literals
import requests
import mechanize
import cookielib
class Requester:
def __init__(self, api_root_url):
self.api_root_url = api_root_url
self.s = requests.Session()
self.new_cookie()
def new_cookie(self):
br = mechanize.Browser()
cookie_jar = cookielib.CookieJar()
br.set_cookiejar(cookie_jar)
# Acquire cookies by logging in with mechanize browser
self.s.cookies.set('v_cookies', cookie_jar)
def make_request(self, req_method, endpoint):
url = self.api_root_url + endpoint
method = getattr(self.s, method)
response = method(url)
return response
Из другого сценария я использую этот класс делать запросы, как это:
from __future__ import absolute_import, division, print_function, unicode_literals
from requester import Requester
req = Requester(api_root)
response = req.make_request('get', endpoint)
И я получаю эту ошибку от response = method(url)
линии:
File "...\Anaconda2\lib\cookielib.py", line 1301, in _cookie_attrs
self.non_word_re.search(cookie.value) and version > 0):
TypeError: expected string or buffer
При тестировании простого запроса GET с кодом ниже, линия производства r1
работает, но линия дает r2
не
def make_request(self, req_method, endpoint):
url = self.api_root_url + endpoint
cookies = self.s.cookies.get('v_cookies')
r1 = requests.get(url, cookies=cookies)
r2 = self.s.get(url)
Как правильно использовать куки с объектом requests.Session?