правильно назначить куки с модулем запросов - PullRequest
1 голос
/ 03 июля 2019

Я нашел решение для моей синтаксической ошибки, однако я не понимаю, почему оригинальный код не работал.

Я пробовал несколько разных модулей, таких как urllib, requests и даже sockets.однако мне было приказано использовать requests за его простоту и точность.Я не хочу давать много информации, поскольку это было проблемой на HTB, однако люди, с которыми я связывался, просто говорят мне: «Ух ты, твой синтаксис выглядит хорошо» и ничем не помогают… Ба.Если мне нужно удалить сообщение из-за спойлеров, я сделаю это немедленно.

Тебе ниже сниппет работал

import requests
import hashlib
s = requests.session()
url = 'someURL'
r = s.get(url)
cookie = s.cookies.get_dict() ##CHANGING THIS WORKED
x = r.text[167:187] #grabbing specific string
a = hashlib.md5(x.encode('utf-8')).hexdigest() ### CHANGING THIS WORKED
# b = s.post(url, data=a, cookies={'PHPSESSID': '{cookie}'})
final = s.post(url, data={'hash':a}, cookies=cookie)
print(final.text)

Я ожидаю, что PHPSESSID будет передан в виде cookie обратно на сервер во времязапрос.приведенный выше синтаксис работает, однако это не так ...

import requests
import hashlib
s = requests.session()
url = 'someURL'
r = s.get(url)
cookie = s.cookies['PHPSESSID']
x = r.text[167:187]
h = hashlib.md5()
h.update(x)
a = h.hexdigest()
b = s.post(url, data=a, cookies={'PHPSESSID': '{cookie}'})
print(b.text)

что если я захочу назначить себе cookie?Я не понимаю, как get_dict() работает, а другой нет.

1 Ответ

0 голосов
/ 03 июля 2019

Cookie фактически передается правильно в обеих ситуациях.ключевое отличие состоит в том, как модуль hashlib обрабатывает unicode-objects.

Решение , поскольку x - это объект Unicode, я должен кодировать его перед отправкой на hexdigest(), поэтому

h = hashlib.md5(x.encode('utf-8')).hexdigest()

работает, а другой нет.будет работать просто кодировка x.

...