Редактирование словаря в Python

Я все еще новичок в кодировании (кодировал неделю), поэтому я борюсь с очень простой функцией.

Я пытаюсь войти на веб-сайт с помощью python, однако мне сложно изменить заголовок set-cookie.

Смотрите мой текущий код ниже:

import requests

targetURL = "http://hostip/v2_Website/aspx/login.aspx"

headers = {
"Host": "*host IP*",
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0"}

response = requests.get(url=targetURL,
                    proxies=proxies,
                    headers=headers,)

response_headers = response.headers

Когда я печатаю response.headers, я получаю следующее:

{'Cache-Control': 'no-cache, no-store', 'Pragma': 'no-cache,no-cache', 'Content-Length': '15671', 'Content-Type': 'text/html; charset=utf-8', 'Expires': '-1', 'Server': 'Microsoft-IIS/7.5', 'X-AspNet-Version': '2.0.50727', 'Set-Cookie': 'ASP.NET_SessionId=vq5q4lzlrqiiebbmxw341yic; path=/; HttpOnly, CookieLoginAttempts=5; expires=Tue, 14-Aug-2018 17:14:09 GMT; path=/', 'X-Powered-By': 'ASP.NET', 'Date': 'Tue, 14 Aug 2018 07:14:10 GMT', 'Connection': 'close'}

Очевидно, когда я использую эти заголовки в своем HTTP POST, он не работает из-за того, что POST имеет заголовок Set-Cookie вместо значения Cookie.

Мои цели следующие:

  • Обновите / измените ключ Set-Cookie на Cookie
  • Затем я хотел бы удалить значения, которые не нужны в ключе Cookie.
  • Добавьте другие ключи и значения

В конечном итоге я хотел бы изменить заголовки на следующие, чтобы я мог использовать их для своего POST, чтобы я мог передавать учетные данные для входа:

POST /Test server/aspx/Login.aspx?function=Welcome HTTP/1.1
Host: *Host IP*
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://*HostIP*/v2_Website/aspx/main.aspx?function=Welcome
Cookie: ASP.NET_SessionId=3vy0fy55xsmffhbotikrwh55; CookieLoginAttempts=5; Admin=false
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 220

Возможна ли моя вышеупомянутая цель? Если да, то как этого добиться, если я не понимаю процесс изменения словаря, которого не вижу.

Еще раз хочу отметить, что я все еще очень зеленый в мире кодирования и пытаюсь «думать как кодировщик», поэтому я буду очень признателен за то, чтобы ответы были немного менее техническими, просто чтобы я мог понять ваш ответ и совет. Любая помощь была бы замечательной!

Я заметил несколько голосов против моего сообщения. Может ли кто-нибудь указать, что я делаю не так, чтобы я мог исправить проблему?

Chaplin 14.08.2018 10:08

Не расстраивайтесь. Вы на самом деле нашли время, чтобы написать и задать относительно четкий вопрос. Держись! Не сдавайся. Я не голосовал против, но это, вероятно, потому, что вы задаете очень конкретную вещь, которая не будет слишком полезна для других, и вопрос немного ошибочен. Учтите: 1) заголовки HTTP-ответа отличаются от заголовков HTTP-запросов и 2) библиотека запросов в любом случае имеет средства для работы с файлами cookie напрямую. Так что хватит пытаться "редактировать словарь" :-)

dkamins 14.08.2018 10:21

Спасибо, dkamins, хорошо, я учту это в своем следующем посте. Все еще очень новичок в мире кодирования, возможно, поэтому мой вопрос немного ошибочен. Я не уверен в возможностях работы с файлами cookie напрямую, надеюсь, кто-нибудь может указать мне правильное направление.

Chaplin 14.08.2018 10:30

Проверить stackoverflow.com/a/4406521/2235381

lojza 14.08.2018 11:08
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
322
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я смог найти ответ после небольшого исследования.

Вместо того, чтобы пытаться отредактировать его вручную, я сделал следующее:

import requests

session_requests = requests.session()

login_url = "http://*host ip*/v2_Website/aspx/Login.aspx"

result = session_requests.get(login_url)

result = session_requests.post(login_url,
                               headers= dict(referer=login_url))

Это извлекает необходимый файл cookie и добавляет все по мере необходимости. Мои заголовки возвращаются следующим образом:

POST /_v2_Website/aspx/Login.aspx HTTP/1.1
Host: *host IP*
User-Agent: python-requests/2.18.4
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
referer: http://*hostIP*/v2_Website/aspx/Login.aspx
Cookie: ASP.NET_SessionId=3crqoo45hnn21anuqulmmr55; CookieLoginAttempts=5
Content-Length: 79
Content-Type: application/x-www-form-urlencoded

Другие вопросы по теме