RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1307783
Accepted
DeNRuDi
DeNRuDi
Asked:2022-07-22 21:05:52 +0000 UTC2022-07-22 21:05:52 +0000 UTC 2022-07-22 21:05:52 +0000 UTC

我无法登录网站,请求

  • 772

我正在履行订单,我需要通过脚本登录网站(只有requests,没有Selenium!)但无论我如何尝试,我都无法登录。答案来了

{'Message': 'Помилка авторизації: Логін або пароль зазначений невірно', 'Status': 'Error', 'ErrorCode': 2},虽然密码是正确的,但我可以通过网站登录,或者有时会得到:

Сессия была закрыта или неактивна.

如果您Network在浏览器中打开它并查看POST请求发送的数据,您会发现由于某种原因,它不是传输的密码,而是 32 个字符的值,据我了解session_id,但是如果您发送它,那么它也不会授权。什么时候需要为POST-request 传递真实密码?在检查器中,没有关于传输我的真实密码(它仅由 6 位或 8 位数字组成)的消息。 在此处输入图像描述

据我了解,您需要发出 1 个POST请求来获取sesion_id,然后是第二个 - 授权。session_id据我了解,这是您需要传输才能接收的数据:

在此处输入图像描述

编码:

import requests

user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'

session = requests.Session()
session.headers.update({'User-Agent': user_agent})


url = "https://mygreenway.co.ua/s/l/"
session.headers.update({'Referer': url})


auth = {
    "type": "auth",
    "action": "sessionkey"
}

ses = session.post(url, data=auth)
key = ses.json()['Key']
print(key)

data = {
    "type": "auth",
    "action": "login",
    "REMEMBER": "0",
    "NAME": "1234567",
    "PASSWORD": key
}

ses2 = session.post('https://mygreenway.co.ua/s/l/', data=data)
print(ses2.text)
with open("result.html", "w", encoding="utf-8") as f:
    f.write(ses2.text)
session.close()

UPD。我挖得更深了,看看请求是如何通过 JavaScript 实现的。在那里,考虑到 MD5 散列来传输密码,但即使创建了这样的散列,它仍然无法授权。也许我错误地收集了这个哈希值。我会尝试

req = {method:'post', dataType:'json', data:{type:'auth', action:'login', REMEMBER:($('#remembermeModal').prop('checked')==true?1:0), NAME:$('#nameModal').val(), PASSWORD:(MD5(key+MD5($('#passwordModal').val())))}};

python
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    DeNRuDi
    2022-07-22T23:42:14Z2022-07-22T23:42:14Z

    问题通过以下方式解决:

    我查看JavaScript了网站上的代码

    req = {method:'post', dataType:'json', data:{type:'auth', action:'login', REMEMBER:($('#remembermeModal').prop('checked')==true?1:0), NAME:$('#nameModal').val(), PASSWORD:(MD5(key+MD5($('#passwordModal').val())))}};

    并看到POST-request 的密码应该以以下格式发送:

    MD5('session_id' + MD5('your_passwd'))

    最终代码如下:

    from hashlib import md5
    import requests
    
    user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36'
    session = requests.Session()
    session.headers.update({'User-Agent': user_agent})
    
    url = "https://mygreenway.co.ua/s/l/"
    session.headers.update({'Referer': url})
    
    ses = session.post(url, data={"type": "auth", "action": "sessionkey"})
    key = ses.json()['Key']
    passwd = "your password"
    my_key = key + md5(passwd.encode('utf-8')).hexdigest()
    my_md5_key = md5(my_key.encode('utf-8')).hexdigest()
    data = {
        "type": "auth",
        "action": "login",
        "REMEMBER": 0,
        "NAME": "12345678",
        "PASSWORD": my_md5_key
    }
    # авторизация
    session.post("https://mygreenway.co.ua/s/l/", data=data)
    # и дальше операции с сайтом
    session.close()
    
    • 2

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5