import argparse import requests import pyautogui from PIL import Image from pyzbar.pyzbar import decode while True: def decode_qr_code(): # 截取屏幕并保存为图片 screenshot = pyautogui.screenshot() screenshot.save('screenshot.png') # 加载图片并解析二维码 image = Image.open('screenshot.png') decoded = decode(image) # 输出二维码内容 if decoded: return decoded[0].data.decode('utf-8') else: return None def login(username,password): # 登录请求的URL url = 'https://bbs.mihoyo.com/apihub/api/user/auth' # 请求头信息 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', 'Referer': 'https://bbs.mihoyo.com/', 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/json;charset=UTF-8'} # 账号和密码 username = '18110615228'password = 'password' # 构造请求体 data = { 'account': username, 'password': password, 'autoLogin': False } # 获取二维码信息 qr_code = decode_qr_code() if qr_code: #将二维码信息添加到请求体中 data['qrCode'] = qr_code #发送登录请求 response = requests.post(url, json=data, headers=headers) # 判断登录是否成功 if response.status_code == 200: print('登录成功') return True else: print('登录失败') return False else: print('未找到二维码') if __name__ == '__main__': parser = argparse.ArgumentParser(description='登录米游社论坛') parser.add_argument('username', help='账号') parser.add_argument('password', help='密码') args = parser.parse_args() login(args.username, args.password)
时间: 2024-02-14 18:35:25 浏览: 74
python调试文件时发生import requests报错.doc
5星 · 资源好评率100%
在这段代码中,已经有一个 while 循环了,用来不断地执行登录操作,直到登录成功为止。如果你想要在这个循环中再添加一个 while 循环,可以考虑让用户输入账号和密码,让程序可以不断地登录不同的账号。以下是修改后的示例代码:
```python
import argparse
import requests
import pyautogui
from PIL import Image
from pyzbar.pyzbar import decode
def decode_qr_code():
# 截取屏幕并保存为图片
screenshot = pyautogui.screenshot()
screenshot.save('screenshot.png')
# 加载图片并解析二维码
image = Image.open('screenshot.png')
decoded = decode(image)
# 输出二维码内容
if decoded:
return decoded[0].data.decode('utf-8')
else:
return None
def login(username, password):
# 登录请求的URL
url = 'https://bbs.mihoyo.com/apihub/api/user/auth'
# 请求头信息
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
'Referer': 'https://bbs.mihoyo.com/',
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': 'application/json;charset=UTF-8'
}
# 构造请求体
data = {
'account': username,
'password': password,
'autoLogin': False
}
# 获取二维码信息
qr_code = decode_qr_code()
if qr_code:
# 将二维码信息添加到请求体中
data['qrCode'] = qr_code
# 发送登录请求
response = requests.post(url, json=data, headers=headers)
# 判断登录是否成功
if response.status_code == 200:
print('登录成功')
return True
else:
print('登录失败')
return False
else:
print('未找到二维码')
return False
if __name__ == '__main__':
while True:
# 不断循环,让用户可以不断输入账号和密码进行登录
username = input('请输入账号:')
password = input('请输入密码:')
login(username, password)
```
在这个代码中,我们添加了一个 while 循环,让用户可以不断输入账号和密码进行登录。每次循环开始时,会使用 `input()` 函数分别获取用户输入的账号和密码,然后调用 `login()` 函数进行登录操作。如果登录成功,循环会继续执行,直到用户手动停止程序。
阅读全文