在p上尝试用户名和密码

2024-04-19 14:12:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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:/Users/Administrator/Desktop/PYHTON/NEW副本.py,第4行,在 从请求导入HTTPDigestAuth ImportError:无法导入名称“HTTPDigestAuth”


Tags: inimportauthjsonurldatarequestusername
1条回答
网友
1楼 · 发布于 2024-04-19 14:12:30

欢迎来到StackOverflow!关于您得到的错误,urllib并不期望POST数据是一个普通的字符串-它需要编码为字节数组。您只需在发送数据之前对其进行编码即可解决此问题:

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

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

不过,正如@stovfl所建议的,使用非常流行的Requests库,用Python发出web请求要容易得多。按照安装说明进行操作(这些说明因安装Python的方式而异,但您可能只需要在命令提示符中键入pip install requests),然后转到basic authentication示例并根据您的用例进行调整。你知道吗

相关问题 更多 >