You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解密MetroPCS登录加密密码,实现Python Requests无JS环境登录?

解决MetroPCS登录中verificationValue加密问题的实操方案

针对你想用Python Requests登录MetroPCS查询套餐余额,却卡在密码加密(verificationValue字段)的问题,分享几个可行的实操步骤:

  • 精准定位加密代码
    打开浏览器开发者工具(F12),切换到Network面板并勾选「Preserve log」,手动完成一次登录操作。再切到Sources面板,全局搜索verificationValue,找到给这个字段赋值的代码段——通常就在登录按钮的点击事件或表单提交的预处理函数里。

  • 解析加密算法细节
    找到加密逻辑后,重点确认加密方式:

    • 如果是RSA加密:JS里一般会硬编码一个公钥字符串,直接复制即可。
    • 如果是AES加密:要留意密钥、初始向量(IV)、加密模式(比如CBC)和填充规则(比如PKCS7),这些参数要么硬编码在JS里,要么从页面隐藏元素或接口返回中获取。
  • 把JS加密逻辑转成Python代码
    举两个常见场景的实现示例:

    1. RSA加密(依赖pycryptodome库)
      from Crypto.PublicKey import RSA
      from Crypto.Cipher import PKCS1_v1_5
      import base64
      
      # 从JS中复制的公钥内容
      metro_public_key = "-----BEGIN PUBLIC KEY-----替换为实际公钥-----END PUBLIC KEY-----"
      plain_password = "你的明文密码"
      
      rsa_key = RSA.import_key(metro_public_key)
      cipher = PKCS1_v1_5.new(rsa_key)
      # 加密后转base64,和JS输出格式对齐
      encrypted_pwd = base64.b64encode(cipher.encrypt(plain_password.encode("utf-8"))).decode("utf-8")
      
    2. AES加密(依赖cryptography库)
      from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
      from cryptography.hazmat.backends import default_backend
      import base64
      
      # 从JS提取的密钥、IV,需转成bytes格式
      key = b"替换为实际AES密钥"
      iv = b"替换为实际IV值"
      plain_password = "你的明文密码"
      
      # 实现PKCS7填充(和JS逻辑对齐)
      pad = lambda s: s + (16 - len(s) % 16) * chr(16 - len(s) % 16)
      padded_pwd = pad(plain_password).encode("utf-8")
      
      cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
      encryptor = cipher.encryptor()
      encrypted_pwd = base64.b64encode(encryptor.update(padded_pwd) + encryptor.finalize()).decode("utf-8")
      
  • 验证加密结果
    把Python生成的encrypted_pwd和浏览器提交的verificationValue对比,确保完全一致。如果有差异,检查编码格式、填充规则是否和JS逻辑匹配——比如JS是否把密码转成了UTF-16编码,或是用了不同的base64编码方式。

  • 构造完整登录请求
    最后用Requests库构造POST请求,带上加密后的verificationValue,同时提交表单必填字段(如用户名、csrf token),以及请求头里的Cookie、User-Agent、Referer等参数,确保请求和浏览器发送的完全一致。

内容的提问来源于stack exchange,提问作者Nicholas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 11:50:23