Запросы Python: передача POST-запроса полезной нагрузкиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Запросы Python: передача POST-запроса полезной нагрузки

Сообщение Anonymous »

Я автоматизирую настройку сетевых устройств. Мне нужно войти в систему на каждом устройстве, изменить сетевой адрес и пароли.
Использование: запрашивает модуль Python.

Первый процесс, который мне нужно сделать, — это войти в систему. Это простая форма. Проверив сайт, я проанализирую заголовки и необходимые параметры:

Код: Выделить всё

General:
Request URL:http://192.168.7.2:8000/api/login
Request Method:POST
Status Code:200 OK
Remote Address:192.168.7.2:8000
Referrer Policy:no-referrer-when-downgrade

Response Headers:
Transfer-Encoding:chunked

Request Headers:
POST /api/login HTTP/1.1
Host: 192.168.7.2:8000
Connection: keep-alive
Content-Length: 37
Accept: application/json, text/plain, */*
Origin: http://192.168.7.2:8000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36
Content-Type: application/json;charset=UTF-8
Referer: http://192.168.7.2:8000/login.html
Accept-Encoding: gzip, deflate
Accept-Language: pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7

Request Payload:
{"user":"user","password":"password"}
Следуя документации, которую я получил в этом коде:

Код: Выделить всё

import requests
import json

url = "http://192.168.7.2:8000/api/login"
payload = {"user":"admin","password":"admin"}
r = requests.post(url,data=payload)
#r.encoding = "UTF-8"
print r.text
Что происходит? Итак, запустив сценарий, я получаю следующий вывод: {"errno":"20" та же ошибка, если я вхожу в систему с неправильным пользователем/паролем. Это невозможно, поскольку при использовании этого пользователя/пароля через веб-интерфейс аутентификация проходит успешно. Я думаю, что что-то не так в коде.

Изменение формата полезных данных: та же ошибка {"errno":"20"

Код: Выделить всё

payload = (("user","admin"),("password","admin"))
r = requests.post(url,data=payload)
#r.encoding = "UTF-8"
print r.text
В кодировке JSON: сообщает о другой ошибке: {"errno":"0","key":"fc2d253fb9b25d5880dd4843f439bc7b"}

Код: Выделить всё

import requests
import json

url = "http://192.168.7.2:8000/api/login"
payload = {"user":"admin","password":"admin"}
r = requests.post(url,data=json.dumps(payload))
#r.encoding = "UTF-8"
print r.text
Передача json напрямую[/b]: отчеты {"errno":"0","key":"6f7ed0ae5f14833f689fcb34c2bf5b77"

Код: Выделить всё

import requests
import json

url = "http://192.168.7.2:8000/api/login"
payload = {"user":"admin","password":"admin"}
r = requests.post(url,json=payload)
#r.encoding = "UTF-8"
print r.text
Использование другого URL-адреса:

Код: Выделить всё

import requests
import json

url = "http://192.168.7.2:8000/login.html"
payload = {"user":"admin","password":"admin"}
r = requests.post(url,data=payload)
#r.encoding = "UTF-8"
print r.text
Сообщается, что UnicodeEncodeError: кодек 'ascii' не может кодировать символы в позициях 3426-3427: порядковый номер вне диапазона (128)
Печать r.encoding -> ISO-8859-1 — это результат.

Установите r .encoding="utf-8" и напечатайте r.text Вывод: UnicodeEncodeError: кодек 'ascii' не может закодировать символ u'\xed' в позиции 3426: порядковый номер вне диапазона (128)

У кого-нибудь есть опыт работы с этой библиотекой?

Подробнее здесь: https://stackoverflow.com/questions/481 ... st-request
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»