我正在尝试在我的路由器上使用 UPNP,但一直给我 501 错误
我正在使用的命令
curl "192.168.1.1:52869/control/igd/devinfo" --header "SOAPAction: urn:dslforum-org:service:DeviceInfo:1#GetInfo" -vv -d @1.xml -H "Content-Type: text/xml;charset=utf-8"
我从...获得信息的deviceinfo.xml和我从...获得 SOAPAction 的IGD.xml正是这部分
<serviceList>
<service>
<serviceType>urn:dslforum-org:service:DeviceInfo:1</serviceType>
<serviceId>DeviceInfo</serviceId>
<controlURL>/control/igd/devinfo</controlURL>
<eventSubURL>/event/igd/devinfo</eventSubURL>
<SCPDURL>/DeviceInfo.xml</SCPDURL>
由于某些未知原因,唯一有效的请求也是来自此工具的请求
甚至认为 IGD.xml 提供了大量选项 .. 端口转发和一些 wan 选项是该工具中唯一可用的选项
有效的命令
curl "192.168.1.1:52869/upnp/control/WANIPConn1" --header "SOAPAction: urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" -vv -d @1.xml -H "Content-Type: text/xml;charset=utf-8"
1.xml 文件看起来像这样,主要是肥皂动作和常规 xml 肥皂请求的混合。
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetExternalIPAddress xmlns:u=”urn:schemas-upnp-org:service:WANIPConnection:1″></u:GetExternalIPAddress></s:Body></s:Envelope>
我什至不知道该工具从哪里获得与 igd.xml 文件中的完全不同的 url,因此我搜索了设备固件文件中的字符串,并找到了一个名为gatedesc.skl的文件,其中只有两个选项图像中的...这是怎么回事,问题出在哪里?
您在 中的架构周围有智能引号
1.xml
,请先更正这些引号(除非这只是从此处粘贴而来)。除了@gaddman(感谢伙伴)所说的......这里有一些信息肯定会帮助任何遇到这个问题的人。
如果您是手动执行的,那么大多数请求都是以这种方式发出的(我正在使用 curl 来完成这项工作)
curl "(在这里你输入你想要的配置的设备 ip 和 upnp 端口 + 控制 url,你肯定会使用miniupnpc-2.1 之类的工具找到)" 然后这个标题--header "SOAPAction: (和你的很长的部分将在操作 url 的顶部找到,就像这张图片)+#(你想要的操作)然后-vv -d @你放置你想要的操作信息的文件.xml 然后这个静态标题 -H “内容类型:文本/xml;charset=utf-8”
所以基本上命令看起来像这样
您可以通过在 miniupnpc-2.1 文件夹的命令行中键入 listdevices.exe 来获取 URL。xml 文件大部分是静态的,动态部分是由这样的肥皂动作头组成的
如果您对此一无所知,我真的建议您使用 gui 工具,例如 UPnP Tester for windows 或UPnP Tool,我真的更喜欢其他工具,因为它主要更新和功能更好。
抱歉解释不清楚,我还是新手。