是嗨森啦 2023-02-24 12:39 采纳率: 0%
浏览 156
已结题

Python 模拟登录问题

需要用python 模拟登录成功两个网站,不想使用无头浏览器。
https://app.bugsnag.com/user/sign_in
https://firebase.google.cn/?hl=zh-cn
Bugsnag 我已经完成一部分但没登录成功。有偿解决问题

def bugsnag_sign_in():
    session = requests.Session()
    headers = {
        "user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Mobile Safari/537.36"
    }
    url = 'https://app.bugsnag.com/user/sign_in/'
    c = '_ga=GA1.2.1754028983.1630720416; __stripe_mid=672da5cb-5e8a-4d61-a814-5c1691576a29ca1852; bf_lead=jvr3andia3s00; _mkto_trk=id:800-TIV-782&token:_mch-bugsnag.com-1630720415682-98700; ajs_anonymous_id=4704fa67-f15d-4019-8251-87ea8a908d06; _clck=zkxorn|1|f5o|0; _gcl_au=1.1.1628588269.1677067601; cookiehub=eyJhbnN3ZXJlZCI6dHJ1ZSwicHJlY29uc2VudCI6ZmFsc2UsInJldmlzaW9uIjoxLCJkbnQiOmZhbHNlLCJjb29raWVMYXdzIjpmYWxzZSwidG9rZW4iOiIiLCJ0aW1lc3RhbXAiOiIyMDIzLTAyLTIyVDEyOjA2OjQwLjg2M1oiLCJjYXRlZ29yaWVzIjpbeyJjaWQiOjEsImlkIjoibmVjZXNzYXJ5IiwidmFsdWUiOnRydWUsInByZWNvbnNlbnQiOmZhbHNlLCJmaXJlZCI6ZmFsc2V9LHsiY2lkIjoyLCJpZCI6InByZWZlcmVuY2VzIiwidmFsdWUiOnRydWUsInByZWNvbnNlbnQiOmZhbHNlLCJmaXJlZCI6ZmFsc2V9LHsiY2lkIjozLCJpZCI6ImFuYWx5dGljcyIsInZhbHVlIjp0cnVlLCJwcmVjb25zZW50IjpmYWxzZSwiZmlyZWQiOmZhbHNlfSx7ImNpZCI6NCwiaWQiOiJtYXJrZXRpbmciLCJ2YWx1ZSI6dHJ1ZSwicHJlY29uc2VudCI6ZmFsc2UsImZpcmVkIjpmYWxzZX1dfQ==; cebs=1; _ce.clock_event=1; _ce.clock_data=46%2C103.203.220.188; _gid=GA1.2.1111383831.1677067602; __stripe_sid=21a05f6c-3708-4c0c-9eab-ab6c7f69f3b5eede59; utm_medium=web-direct; utm_source=Bugsnag.com; utm_campaign=not-provided; bf_visit=1fj3nl6fe0fg00; bugsnag_dashboard_logged_in=false; _gat_UA-32152250-1=1; _uetsid=5dc2fff0b2a911ed92ae03d04570f94a; _uetvid=103b90904ac011ed8ecab7ef58ea9100; cebsp=9; _gat=1; _ce.s=v~ef8259be62a76c04e92156c7a84f63db465e730a~vpv~3~ir~1~gtrk.la~leggnb95; _bugsnag_session_2=NzRpTDd6V3dpdy9sMHB4dTVnQkFxdW9VT1FxVmR3WHBnaXRtTzBpV1lvdUNldVZIeUowLy9RM1JkUUZ1aWxSNjc0MENFUVlOSVB4RlRWdEp3b1huWTNkZnB5YUlVVnA4ZmpDVUVTcXVzR3piTkpCbkFBc3lPdHZXb1o5VDZRaERMUDRmanpzOEhWNUlUcGZneFRpUW41S2o0VnQrYzNZM3JSOTVYSmpyeGFMZTF1RHBkOEVxOURleU00R2NWcWszaW54eVBMWFhRR1poNEdHSVZ3TVdRNWxyT20xRCtxNzhYNGZGbXJPTXBxQTRuK0JERGprYyswRUtDR09CUXU0TEdMK2NOQ2hDTE9lVUcxUzExdXV5M3NMSk5mSzJ1T0I4ZHhCRnAxZENIQTF3SUs4Q3MxU0JEbUxYUVd1QWI3andHUmhsb1RmY3FiY1NhOFRvRm9pRjVoQlVGRXJzNVlKdjFxUGxQNWI1bXg0PS0tQy9KUWdmaTV5SW9BYlBzRWovQTQzUT09--5e72e8fbb31db94d020c381da0b07567f4e0c66b; _dd_s=rum=0&expire=1677118725504'

    p = {
        'sort': 'last_seen',
        'direction': 'desc',
        'per_page': 30,
        'histogram': 'dynamic',
        'filters[event.since]': '2023-01-24T01:57:11.301Z',
        'filters[error.status]': 'open',
        'filters[release.seen_in]': '4.2.30',
        'filters[event.before]': '2023-02-23T01:57:11.301Z'
    }
    r1 = session.get(url, headers=headers)
    # with open("bugsnag_sign.html", 'w', encoding='utf-8') as f:
    #     f.write(r1.content.decode())
    html = etree.HTML(r1.text)
    html_data = html.xpath('/html/body/div/div[3]/div/form/input[@name="authenticity_token"]/@value')
    print(html_data)
    url2 = 'https://app.bugsnag.com/user/sign_in'
    data = {
        'authenticity_token': html_data,
        'user[email]': 'xxx',
        'user[password]': 'xxx',
        'button': None
    }
    r = session.post(url2, headers=headers, data=data)
    print(r.status_code)
    print(session.cookies)
    url3 = 'https://app.bugsnag.com/organizations/etekcity/stability-center'
    r3 = session.get(url3)
    print(r3.status_code)
    print(r3.text)
    with open("bugsnag_sign_in.html", 'w', encoding='utf-8') as f:
        f.write(r3.content.decode())


bugsnag_sign_in()

  • 写回答

7条回答 默认 最新

  • MarkHan_ 2023-02-24 13:05
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    对于这个问题,您可以尝试以下步骤:

    1. 查看登录页面的源代码,找到登录表单的输入字段名称和提交表单的URL。
    2. 使用 requests 库进行 POST 请求,将用户名和密码作为表单数据提交到登录表单 URL。需要注意的是,请求的头部需要包含必要的 Cookie 和 User-Agent 等信息,以便服务器能够验证请求的来源并设置会话 Cookie。
    3. 检查返回的响应,查看登录是否成功。您可以检查响应的状态码、文本内容或特定的响应头部来判断是否登录成功。如果登录失败,可以根据响应内容进行进一步的调试,查看错误信息并尝试解决问题。
    4. 对于 Firebase 的登录,您需要查看其文档中的身份验证部分,了解如何使用 Firebase API 进行身份验证。根据文档中提供的示例代码,编写一个登录脚本并测试其功能。在脚本中,您需要提供 Firebase 项目的凭证、用户的电子邮件和密码等必要信息,并将其提交到 Firebase API 进行验证。如果验证成功,您将获得一个带有访问令牌的响应。如果验证失败,您将收到一个带有错误信息的响应。根据响应内容进行调试并尝试解决问题。
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月24日
  • 修改了问题 2月24日
  • 创建了问题 2月24日