Я хочу использовать Python для имитации действия входа, которое получает некоторую отправку сообщений по HTTP-методу GET. Итак, я пишу что-то вроде этогоиспользовать Python urllib.urlopen для точной передачи данных
from urllib.request import urlopen, Request
urlopen(Request(URL, data=data_for_verify.encode(), method='GET'))
Проблема заключается в том, что не делает то же самое, как реальное действие входа, который, как это (от нуля Wireshark, HTTP печатаемых данных только)
GET /rjsdcctrl?mac%3dfcaa14ec56f3%26ipv4%3d1681312010%26ipv61%3d0%26ipv62%3d0%26ipv63%3d0%26ipv64%3d0%26product%3d33554432%26mainver%3d67108864%26subver%3d1610612736 HTTP/1.1
Accept: text/*
User-Agent: HttpCall
Accept-Language: en-us
Host: 10.0.6.251
Cache-Control: no-cache
И что моя программа сделала это:
GET/HTTP/1.1
Accept-Encoding: identity
Content-Type: application/x-www-form-urlencoded
Host: 10.0.6.251:80
User-Agent: Python-urllib/3.4
Connection: close
Content-Length: 161
rjsdcctrl?mac%3dfcaa14ec56f3%26ipv4%3d1681312010%26ipv61%3d0%26ipv62%3d0%26ipv63%3d0%26ipv64%3d0%26product%3d33554432%26mainver%3d67108864%26subver%3d1610612736
реального действие Логина имеет заголовок приходит первый, и не имеет линии GET/HTTP /1.1
или это просто заголовок без содержимого, а первая строка GET содержит реальное сообщение запроса. Как я могу имитировать это с помощью urllib Python? Я использую Python 3.4
Я бы рекомендовал использование запросов (http://docs.python-requests.org/) для таких задач, как этот –
Как @Daniel состояния для запроса GET вы должны добавить параметры url. Использование аргумента 'data' фактически отправит данные в тело запроса. Также для использования 'headers' вы можете использовать заголовки аргументов ключевых слов, например. 'urlopen (url, headers = my_headers)'. – Amyth