Я все еще новичок в кодировании (кодировал неделю), поэтому я борюсь с очень простой функцией.
Я пытаюсь войти на веб-сайт с помощью 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.
Мои цели следующие:
В конечном итоге я хотел бы изменить заголовки на следующие, чтобы я мог использовать их для своего 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
Возможна ли моя вышеупомянутая цель? Если да, то как этого добиться, если я не понимаю процесс изменения словаря, которого не вижу.
Еще раз хочу отметить, что я все еще очень зеленый в мире кодирования и пытаюсь «думать как кодировщик», поэтому я буду очень признателен за то, чтобы ответы были немного менее техническими, просто чтобы я мог понять ваш ответ и совет. Любая помощь была бы замечательной!
Не расстраивайтесь. Вы на самом деле нашли время, чтобы написать и задать относительно четкий вопрос. Держись! Не сдавайся. Я не голосовал против, но это, вероятно, потому, что вы задаете очень конкретную вещь, которая не будет слишком полезна для других, и вопрос немного ошибочен. Учтите: 1) заголовки HTTP-ответа отличаются от заголовков HTTP-запросов и 2) библиотека запросов в любом случае имеет средства для работы с файлами cookie напрямую. Так что хватит пытаться "редактировать словарь" :-)
Спасибо, dkamins, хорошо, я учту это в своем следующем посте. Все еще очень новичок в мире кодирования, возможно, поэтому мой вопрос немного ошибочен. Я не уверен в возможностях работы с файлами cookie напрямую, надеюсь, кто-нибудь может указать мне правильное направление.
Проверить stackoverflow.com/a/4406521/2235381






Я смог найти ответ после небольшого исследования.
Вместо того, чтобы пытаться отредактировать его вручную, я сделал следующее:
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
Я заметил несколько голосов против моего сообщения. Может ли кто-нибудь указать, что я делаю не так, чтобы я мог исправить проблему?