Python 3, urllib POST представить - PullRequest
       29

Python 3, urllib POST представить

7 голосов
/ 30 апреля 2011

Я хотел бы написать скрипт Python для автоматического входа в мою учетную запись счетчика использования широкополосного доступа.Я никогда не делал POST-отправку раньше, и у меня возникают некоторые проблемы с этим.

import urllib.request, urllib.parse, urllib.error
import socket

try:
    details = urllib.parse.urlencode({ 'IDToken1': 'USERNAME', 'IDToken2': 'PASSWORD' })
    url = urllib.request.Request('https://login1.telecom.co.nz/distauth/UI/Login?realm=XtraUsers&goto=https%3A%2F%2Fwww.telecom.co.nz%3A443%2Fjetstreamum%2FxtraSum%3Flink%3Drdt', details)
    url.add_header("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13")

    responseData = urllib.request.urlopen(url).read().decode('utf8', 'ignore')
    responseFail = False

except urllib.error.HTTPError as e:
    responseData = e.read().decode('utf8', 'ignore')
    responseFail = False

except urllib.error.URLError:
    responseFail = True

except socket.error:
    responseFail = True

except socket.timeout:
    responseFail = True

except UnicodeEncodeError:
    print("[x]  Encoding Error")
    responseFail = True

print(responseData)

Из полученного мной HTML-кода IDToken1 - это идентификатор пользователя, а IDToken2 - это идентификатор пароля.

Вот моя проблема:

  • Когда я ввожу правильное имя пользователя и пароль, страница входа загружается, но:

  • Когда я ввожу неправильное имя пользователя или пароль, я получаю страницу, на которой:

    На этом сервере обнаружена внутренняя ошибка, которая не позволяет ему выполнить ваш запрос.Наиболее вероятная причина - неправильная конфигурация.Пожалуйста, попросите администратора найти сообщения в журнале ошибок сервера.

Ответы [ 2 ]

8 голосов
/ 08 апреля 2013
details = urllib.parse.urlencode({'IDToken1': 'USERNAME', 'IDToken2': 'PASSWORD'})

Добавьте следующую строку:

details = details.encode('UTF-8')
0 голосов
/ 06 февраля 2013

Это может быть разработано.Что произойдет, если вы сделаете это в браузере?Тот факт, что он работает с правильными данными, означает, что вы все делаете правильно.

...