@KPEBETKA

Python::Requests. Как лучше изменить значения кук перед отправкой запроса?

Код впринципе рабочий, но мне не нравится именно то, что для такого простого действия уходит целых восемь строк кода
Можно ли сжать в пару-тройку строчек?

value = 'ABCDEFG'
s = requests.Session()

s.get('https://server.ru')

aaa_cookie_val1 = {"name": 'val1', "value": value, "domain":' .aaa.server.ru',}
aaa_cookie_val2 = {"name": 'val2', "value": value, "domain": '.aaa.server.ru',}
bbb_cookie_val1 = {"name": 'val1', "value": value, "domain": '.bbb.server.ru',}
bbb_cookie_val2 = {"name": 'val2', "value": value, "domain": '.bbb.server.ru',}

s.cookies.set(**aaa_cookie_val1)
s.cookies.set(**aaa_cookie_val2)
s.cookies.set(**bbb_cookie_val1)
s.cookies.set(**bbb_cookie_val2)

s.get('https://server.ru/login?login=%s&password=%s' % (login, password))
  • Вопрос задан
  • 4309 просмотров
Решения вопроса 2
@throughtheether
human after all
Безотносительно установки значений cookie (не могу сходу придумать домены/значения для тестирования):

value='ABCDEFG'
vals=['val1','val2']
domains=['.aaa','.bbb']
import itertools
for val,domain in itertools.product(vals,domains):
    cookie_val={"name": val, "value": value, "domain":"%s.server.ru"%domain,}
    print cookie_val


Выводит
{'domain': '.aaa.server.ru', 'name': 'val1', 'value': 'ABCDEFG'}
{'domain': '.bbb.server.ru', 'name': 'val1', 'value': 'ABCDEFG'}
{'domain': '.aaa.server.ru', 'name': 'val2', 'value': 'ABCDEFG'}
{'domain': '.bbb.server.ru', 'name': 'val2', 'value': 'ABCDEFG'}


Вам остается заменить print в теле цикла на s.cookies.set(**cookie_val) и уже вне цикла вызвать
s.get('https://server.ru/login?login=%s&password=%s' % (login, password))
Ответ написан
Комментировать
@throughtheether
human after all
сокращенная нетестированная версия

import itertools
value = 'ABCDEFG'
s = requests.Session()
s.get('https://server.ru')
for val,domain in itertools.product(['val1','val2'],['.aaa','.bbb']):
    cookie_val={"name": val, "value": value, "domain":"%s.server.ru"%domain,}
    s.cookies.set(**cookie_val)
s.get('https://server.ru/login?login=%s&password=%s' % (login, password))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы