是嗨森啦 2023-02-25 15:02 采纳率: 0%
浏览 21
已结题

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()
  • 写回答

2条回答 默认 最新

  • Leodong. 2023-03-13 11:23
    关注

    下面是一个示例代码,可以参考进行编写,如果对您有用,望采纳,谢谢

    
    ```python
    import requests
    from bs4 import BeautifulSoup
    
    # 创建一个会话
    session = requests.Session()
    
    # 构建登录页面的 URL 和参数
    login_url = "https://app.bugsnag.com/user/sign_in"
    login_params = {"user[email]": "your_email", "user[password]": "your_password"}
    
    # 发送 GET 请求,获取登录页面信息
    login_page = session.get(login_url)
    
    # 解析登录页面,获取隐藏表单字段的值
    soup = BeautifulSoup(login_page.text, "html.parser")
    authenticity_token = soup.find("input", {"name": "authenticity_token"})["value"]
    # 其他隐藏表单字段的值也可以通过类似方式获取
    
    # 构建登录参数的字典
    login_params["authenticity_token"] = authenticity_token
    # 添加其他需要的参数
    
    # 发送 POST 请求,提交登录参数
    response = session.post(login_url, data=login_params)
    
    # 检查登录是否成功
    if response.status_code == 200:
        # 访问登录成功后的其他页面
        other_url = "https://app.bugsnag.com/other_page"
        other_page = session.get(other_url)
        # 处理其他页面的响应
    else:
        print("Login failed.")
    
    
    

    ```
    对于 Firebase,登录方式可能会有所不同,需要根据实际情况进行调整。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月13日
  • 创建了问题 2月25日