How to login moodle with requests?(如何用请求登录moodle?)
本文介绍了如何用请求登录moodle?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正尝试使用Python脚本模拟登录,但有";会话过期";错误。以下是代码:
import requests
import re
login = 12345678
passwd = 'password'
r = requests.get("https://moodle.site.com/login/index.php")
cookie = r.cookies.get_dict()
pattern = '<input type="hidden" name="logintoken" value="w{32}">'
token = re.findall(pattern, r.text)
token = re.findall("w{32}", token[0])
payload = {'username': login, 'password': pass, 'anchor': '', 'logintoken': token[0]}
r = requests.post("https://moodle.site.com/login/index.php", cookies=cookie, data=payload)
print(r)
推荐答案
import requests
import re
app_data = {
"login": "LOG",
"password": "PASS",
"url": "https://UR_DOMAIN/login/index.php"
}
def auth_moodle(data: dict) -> requests.Session():
login, password, url_domain = data.values()
s = requests.Session()
r_1 = s.get(url=url_domain + "/login/index.php")
pattern_auth = '<input type="hidden" name="logintoken" value="w{32}">'
token = re.findall(pattern_auth, r_1.text)
token = re.findall("w{32}", token[0])[0]
payload = {'anchor': '', 'logintoken': token, 'username': login, 'password': password, 'rememberusername': 1}
r_2 = s.post(url=url_domain + "/login/index.php", data=payload)
for i in r_2.text.splitlines():
if "<title>" in i:
print(i[15:-8:])
break
counter = 0
for i in r_2.text.splitlines():
if "loginerrors" in i or (0 < counter <= 3):
counter += 1
print(i)
return s
print(auth_moodle(data=app_data))
这篇关于如何用请求登录moodle?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:如何用请求登录moodle?
基础教程推荐
猜你喜欢
- kivy 应用程序中的一个简单网页作为小部件 2022-01-01
- 对多索引数据帧的列进行排序 2022-01-01
- Python 中是否有任何支持将长字符串转储为块文字或折叠块的 yaml 库? 2022-01-01
- 比较两个文本文件以找出差异并将它们输出到新的文本文件 2022-01-01
- Python,确定字符串是否应转换为 Int 或 Float 2022-01-01
- 在 Django Admin 中使用内联 OneToOneField 2022-01-01
- 在 Python 中将货币解析为数字 2022-01-01
- 究竟什么是“容器"?在蟒蛇?(以及所有的 python 容器类型是什么?) 2022-01-01
- matplotlib 设置 yaxis 标签大小 2022-01-01
- Kivy 使用 opencv.调整图像大小 2022-01-01
