在门户网站上尝试用户名和密码

时间:2018-11-24 19:25:42

标签: python python-requests urllib

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}")

无法正常工作,并显示以下错误:

回溯(最近通话最近):   文件“ C:/用户/管理员/桌面/ PYHTON / NEW SCRPT.py”,第4行,在     从请求导入HTTPDigestAuth ImportError:无法导入名称“ HTTPDigestAuth”

1 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow!对于您遇到的错误,urllib并不期望POST数据是普通字符串-需要将其编码为字节数组。您可以通过在发送之前对数据进行编码来解决此问题:

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

请注意,这与urlencode不同。只是用特殊代码替换了字符串中的特定字符,但结果仍然是普通字符串。

但是,正如@stovfl所建议的那样,使用非常流行的Requests库,用Python进行Web请求要容易得多。按照安装说明进行操作(具体取决于安装Python的方式,但是您可能只需要在命令提示符下键入pip install requests),然后转到basic authentication示例,并使其适应您的用例。