Отправка HTTP-запроса с использованием Python

Я перехватил HTTP-запрос, используя FIDDLER.

Я хотел бы отправить тот же запрос, только на этот раз, используя Python, а не мой браузер.

Я провел некоторое исследование и обнаружил, что httplib - это путь, но по какой-то причине мой код не работает.

С моего компьютера не отправлено ни одного запроса (я могу проверить это с помощью FIDDLER).

Есть идеи, что не так?

import httplib

headers = {
"Host":" unive.edu",
"Connection":" keep-alive",
"Content-Length":" 5142",
"Cache-Control":" max-age=0",
"Accept":" text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Origin":" http://unive.edu",
"User-Agent":" Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36",
"Content-Type":" application/x-www-form-urlencoded",
"DNT":" 1",
"Referer":" http://unive.edu/webtixsnetglilot/SelectCoursePage2.aspx?dtticks=635358672778578750&hideBackButton=1",
"Accept-Encoding":" gzip,deflate,sdch",
"Accept-Language":" en-US,en;q=0.8,he;q=0.6",
"Cookie":" ASP.NET_SessionId=c5nch3ouzxkaaa5bk1rflaic; __atuvc=1%7C16%2C1%7C17%2C0%7C18%2C0%7C19%2C1%7C20; __utma=184162612.90089091.1384326557.1400242958.1400259831.35; __utmb=184162612.4.10.1400259831; __utmc=184162612; __utmz=184162612.1384326557.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); SS#177904#2#1#StopLoad#635358666509203750=true; SS#177904#2#1#StopLoad#635358672778891250=true; hfSKey=|||||||||gli; hfOIKey=imVrnYvw; SS#177904#2#1#StopLoad#635358677931547500=true;"
}

body = ""

conn = httplib.HTTPConnection("unive.edu")
conn.request("POST", "/web/SelectCoursePage2.aspx?dtticks=635358682524828750&hideBackButton=1", None, headers)
res = conn.getresponse()

Спасибо, Майкл.

2 ответа

Решение

Проблема в том, что у вас есть Content-Length заголовок, утверждающий, что вы собираетесь отправить сервер 5142 байты в POST body, но вы вообще не отправляете содержимое тела. Как следствие, сервер зависает в ожидании тела; это вероятно потерпит неудачу со временем ожидания через несколько минут.

Чтобы это исправить, убедитесь, что Content-Length заголовок соответствует длине тела в байтах.

Пожалуйста, попробуй print(res.status)

В противном случае я использую: http://docs.python-requests.org/en/latest/

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