使用python请求检查登录是否正确

使用python请求检查登录是否正确,python,python-3.x,authentication,python-requests,Python,Python 3.x,Authentication,Python Requests,我一直在开发一个程序,它可以让你登录到不同的网页,并告诉你登录是否成功。它的工作原理是:1.登录到您知道存在且正确的帐户,并将响应文本复制到文件中;2.登录到您知道无效的帐户,并执行相同的操作。然后,当您尝试登录到该网页时,程序会将响应与以前保存的响应进行比较,并找到相似之处。如果它发现与正确的登录文本有更多相似之处,这意味着它成功了,如果没有成功的话。但这似乎不起作用,我也不明白为什么。我认为这是因为用来比较反应的机制,但我不确定。我把密码留在这里。谢谢你的回答 import requests

我一直在开发一个程序,它可以让你登录到不同的网页,并告诉你登录是否成功。它的工作原理是:1.登录到您知道存在且正确的帐户,并将响应文本复制到文件中;2.登录到您知道无效的帐户,并执行相同的操作。然后,当您尝试登录到该网页时,程序会将响应与以前保存的响应进行比较,并找到相似之处。如果它发现与正确的登录文本有更多相似之处,这意味着它成功了,如果没有成功的话。但这似乎不起作用,我也不明白为什么。我认为这是因为用来比较反应的机制,但我不确定。我把密码留在这里。谢谢你的回答

import requests

def checkStatus(response):     #we check if the response let us login by comparing it to previous responses. This algorythm should be able to work for every webpage
    check1 = 0
    check2 = 0
    
    file1 = open("wronglogin.txt", "r")
    file2 = open("correctlogin.txt", "r")

    i = 0
    
    for line in response:
        try:
            if file2.read(i) == line:
                check2 += 1
            i+=1
        except:
            break

    i = 0

    for line in response:
        try:
            if file1.read(i) == line:
                check1 += 1
            i+=1
        except:
            break
    print(check1)
    print(check2)
    if check1 < check2:
        return True
    else:
        return False

url = "https://twitter.com/explore"
username = "your_username"
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'}

password = "your_password"
form_data = { "username":str(username), "password":str(password) }

s = requests.Session()

response = s.post(url, headers = headers, data = form_data)

print(response.text)

if checkStatus(response.text) == True:
    print(form_data["password"])

导入请求
def checkStatus(响应):#我们通过将响应与以前的响应进行比较来检查响应是否允许我们登录。这种算法应该能够适用于每个网页
检查1=0
检查2=0
file1=open(“errollogin.txt”、“r”)
file2=open(“correctlogin.txt”、“r”)
i=0
对于响应行:
尝试:
如果file2.read(i)=行:
检查2+=1
i+=1
除:
打破
i=0
对于响应行:
尝试:
如果file1.read(i)=行:
检查1+=1
i+=1
除:
打破
打印(检查1)
打印(检查2)
如果检查1<检查2:
返回真值
其他:
返回错误
url=”https://twitter.com/explore"
username=“您的用户名”
headers={'User-Agent':'Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/65.0.3325.181 Safari/537.36'}
password=“您的密码”
表格数据={“用户名”:str(用户名),“密码”:str(密码)}
s=请求。会话()
response=s.post(url,headers=headers,data=form\u data)
打印(response.text)
如果checkStatus(response.text)=True:
打印(表单_数据[“密码”])

在进一步检查代码后,我发现它不是在逐行比较我在发布时得到的响应内容,而是逐位比较,而是将文件内容作为一行进行读取。当然,这意味着它将不起作用,因此我建议先将要签入的响应的内容保存到一个文件中,以便逐行读取。然而,你正在搜索的信息,aka。您是否正确登录的信息可能不在内容中,而是在标题、cookies等中。为了检查所有这些因素,我发现了一个小技巧。就像使用数组一样,实际上可以创建一个for循环来检查它可能拥有的所有变量。这看起来像这样:

import requests

url = "https://twitter.com/explore"
username = "your_username"
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36      (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'}
password = "your_password"
form_data = { "username":str(username), "password":str(password) }
Session = requests.session()
response = Session.post(url, data=data, headers=headers)
for var in response:
    print(var)

var将是存储在响应中的数据。我不能100%确定它是否是所有的数据://

我按原样运行了上面的代码片段,收到一个HTML文档,请求重定向到遗留Twitter。我建议确保您在回复中收到的信息是预期结果。其次,您没有显示如何将响应写入文件?这是故意排除的还是只是在您的实现中完全丢失的?我实际上只是打印响应并将其复制粘贴到一个文本文件中,那里没有算法^^(不过我会添加它)