如何使用默认网关路由器 5268AC 的设备访问代码请求数据?
How can I request data with device access code for default gateway router 5268AC?
我想编写一个脚本,可以从路由器收集数据,在本例中为 5268AC。到目前为止,我已经能够使用 response.get()
从不需要设备访问代码来查看信息的 URL 中获取信息。要获取有关 Wifi 的信息,例如默认 SSID,我需要通过浏览器输入位于路由器上的访问代码。我在尝试 request.post(url)
.
时不断收到错误 500
url="http://192.168.1.254/xslt?PAGE=C_2_1"
根据检查,我相信这是我要填写的表格。键值是 ADM_PASSWORD
.
<h2>Login</h2>
<p>Device access code required. Please enter the device access code, then click Submit.</p>
<form name="pagepost" method="post" action="xslt?PAGE=login_post" id="pagepost">
<input type="hidden" name="NONCE" value="0abc59f54121398" />
<input type="hidden" name="THISPAGE" value="" />
<input type="hidden" name="NEXTPAGE" value="C_2_1" />
<input type="hidden" name="CMSKICK" value="" />
<div>
<div class="form-group">
<label for="ADM_PASSWORD">Access code</label>
<span>
<input type="password" id="ADM_PASSWORD" name="ADM_PASSWORD" size="16" maxlength="16" autofocus="autofocus" required="required" autocomplete="off" />
</span>
</div>
</div>
<p align="right">
<input type="submit" class="button" value="Submit" />
我试过了,但出现 500 状态错误。
payload = { 'ADM_PASSWORD':'*access code*' }
response = requests.post(url, headers=headers, data=payload)
有没有一种方法可以通过请求而不是使用 GUI 来收集信息?
首先在 Chrome
/Firefox
中,您可以使用 DevTools
(选项卡:Network
)查看登录时浏览器发送的内容。
表格有 action="xslt?PAGE=login_post"
所以你应该发送到
url = "http://192.168.1.254/xslt?PAGE=login_post"
它是相对路径 - 所以如果你打开页面即。 http://http://192.168.1.254/login/
那么就需要
url = "http://192.168.1.254/login/xslt?PAGE=login_post"
您必须发送您在表格中看到的所有 input
- 特别是 hidden
.
有时甚至可能需要 submit
.
你应该使用 name=
作为键,而不是 id=
payload = {
'NONCE': '0abc59f54121398',
'THISPAGE': '',
'NEXTPAGE': 'C_2_1',
'CMSKICK': '',
'ADM_PASSWORD': '*access code*'
}
如果您将 post()
与 data=
或 json=
一起使用,那么它应该会自动在 Content-Type
和 Content-Length
中设置正确的值,而您没有将其设置为 headers
.
您也可以先 运行 get()
使用表单进行分页,因为它可能会设置 server/device 也可能会检查的 cookie。
仅当页面使用 JavaScript 在 form
中生成一些额外数据时才会出现问题,并且它需要使用 Selenium - 但它需要全部使用 Selenium
有时我向 https://httpbin.org/post
发送请求,它会将所有 headers、cookies、post 数据发回给我,我可以将其与我看到的数据进行比较在 DevTools
.
最终我使用本地代理服务器 Charles 并在浏览器和 Python 中使用它来查看代码是否发送与浏览器相同的数据。
我想编写一个脚本,可以从路由器收集数据,在本例中为 5268AC。到目前为止,我已经能够使用 response.get()
从不需要设备访问代码来查看信息的 URL 中获取信息。要获取有关 Wifi 的信息,例如默认 SSID,我需要通过浏览器输入位于路由器上的访问代码。我在尝试 request.post(url)
.
url="http://192.168.1.254/xslt?PAGE=C_2_1"
根据检查,我相信这是我要填写的表格。键值是 ADM_PASSWORD
.
<h2>Login</h2>
<p>Device access code required. Please enter the device access code, then click Submit.</p>
<form name="pagepost" method="post" action="xslt?PAGE=login_post" id="pagepost">
<input type="hidden" name="NONCE" value="0abc59f54121398" />
<input type="hidden" name="THISPAGE" value="" />
<input type="hidden" name="NEXTPAGE" value="C_2_1" />
<input type="hidden" name="CMSKICK" value="" />
<div>
<div class="form-group">
<label for="ADM_PASSWORD">Access code</label>
<span>
<input type="password" id="ADM_PASSWORD" name="ADM_PASSWORD" size="16" maxlength="16" autofocus="autofocus" required="required" autocomplete="off" />
</span>
</div>
</div>
<p align="right">
<input type="submit" class="button" value="Submit" />
我试过了,但出现 500 状态错误。
payload = { 'ADM_PASSWORD':'*access code*' }
response = requests.post(url, headers=headers, data=payload)
有没有一种方法可以通过请求而不是使用 GUI 来收集信息?
首先在 Chrome
/Firefox
中,您可以使用 DevTools
(选项卡:Network
)查看登录时浏览器发送的内容。
表格有 action="xslt?PAGE=login_post"
所以你应该发送到
url = "http://192.168.1.254/xslt?PAGE=login_post"
它是相对路径 - 所以如果你打开页面即。 http://http://192.168.1.254/login/
那么就需要
url = "http://192.168.1.254/login/xslt?PAGE=login_post"
您必须发送您在表格中看到的所有 input
- 特别是 hidden
.
有时甚至可能需要 submit
.
你应该使用 name=
作为键,而不是 id=
payload = {
'NONCE': '0abc59f54121398',
'THISPAGE': '',
'NEXTPAGE': 'C_2_1',
'CMSKICK': '',
'ADM_PASSWORD': '*access code*'
}
如果您将 post()
与 data=
或 json=
一起使用,那么它应该会自动在 Content-Type
和 Content-Length
中设置正确的值,而您没有将其设置为 headers
.
您也可以先 运行 get()
使用表单进行分页,因为它可能会设置 server/device 也可能会检查的 cookie。
仅当页面使用 JavaScript 在 form
中生成一些额外数据时才会出现问题,并且它需要使用 Selenium - 但它需要全部使用 Selenium
有时我向 https://httpbin.org/post
发送请求,它会将所有 headers、cookies、post 数据发回给我,我可以将其与我看到的数据进行比较在 DevTools
.
最终我使用本地代理服务器 Charles 并在浏览器和 Python 中使用它来查看代码是否发送与浏览器相同的数据。