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?
猜你喜欢
- 使用 Cython 将 Python 链接到共享库 2022-01-01
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01
- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
