пробовать имя пользователя и пароль на портале - PullRequest
0 голосов
/ 24 ноября 2018
import urllib.request
import urllib
import urllib.error
import json
from requests.auth import HTTPDigestAuth

userlist = tuple(range(161320,161345))
passlist = ('qq')

for username in userlist:
    for password in passlist:
        url='URL'
        encoded=requests.get(url, auth=HTTPDigestAuth('username', 'password'))
    #data = { 'username': username, 'password': password }
    encoded = urllib.parse.urlencode(data).encode('utf-8')
        #encoded = json.dumps(data)
        request = urllib.request.Request(url,encoded)
        response = urllib.request.urlopen(request)
        payload = response.read().decode()

        if "You have successfully logged in"  in payload: 
            print(f"{user} {password}")

он не работает, показывая ряд упомянутых ниже ошибок:

Traceback (последний вызов был последним): файл "C: / Users / Administrator / Desktop / PYHTON / NEW SCRPT.py",строка 4, из запросов на импорт HTTPDigestAuth ImportError: невозможно импортировать имя 'HTTPDigestAuth'

1 Ответ

0 голосов
/ 24 ноября 2018

Добро пожаловать в StackOverflow!Что касается получаемой ошибки, urllib не ожидает, что данные POST будут нормальной строкой - их нужно кодировать как байтовый массив.Вы можете исправить это, просто зашифровав данные перед отправкой:

encoded = urllib.parse.urlencode(data).encode('utf-8')

Обратите внимание, что это отличается от urlencode.Это просто заменяет определенные символы в строке специальными кодами, но результат по-прежнему является обычной строкой.

Как и предполагал @stovfl, сделать веб-запросы в Python намного проще * сочень популярная библиотека запросов .Следуйте инструкциям по установке (они различаются в зависимости от того, как вы установили Python, но вам, вероятно, просто нужно набрать pip install requests в командной строке), затем перейдите к примеру basic authentication и адаптируйте его для своего варианта использования..

...