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

如何在requests会话中绕过JS获取DLink路由器XML令牌实现编程发短信?

解决方案:直接请求XML文件获取CSRF Token

完全不需要用无头浏览器,直接在同一个requests会话里请求路由器的/csrf.xml文件就能拿到token,步骤简单直接:

  1. 维持会话一致性:路由器管理页面依赖会话Cookie做验证,所以必须用同一个session对象完成所有请求,确保身份状态一致。
  2. 解析XML提取Token:拿到XML响应后,直接解析<token>标签里的内容即可。

示例代码如下:

from requests import session
import xml.etree.ElementTree as ET

# 替换为你的实际参数
ipaddress = "你的路由器管理IP"
target_number = "接收短信的手机号"
sms_content = "要发送的短信内容"

with session() as c:
    # 1. 请求csrf.xml获取token
    xml_res = c.get(f"http://{ipaddress}/csrf.xml")
    root = ET.fromstring(xml_res.content)
    csrf_token = root.find("token").text
    
    # 2. 构造并发送短信请求
    sms_url = (
        f"http://{ipaddress}/sys_smsmsg.htm?"
        f"csrftok={csrf_token}&Nsend=1&Nmsgindex=0"
        f"&S801E2701={target_number}&S801E2801={sms_content}"
    )
    send_res = c.get(sms_url)
    
    # 可根据响应状态码或内容判断发送结果
    print(f"请求状态码: {send_res.status_code}")

额外说明

  • CSRF Token一般在会话有效期内持续有效,无需每次发送短信都重新请求XML;如果遇到token失效的情况,重新请求一次即可。
  • 确保你的requests会话已经完成路由器的登录验证(若管理页面需要登录),否则请求XML或发送短信会被拒绝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:38:16