最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Is it possible to request XML with HTML without browser - Stack Overflow

programmeradmin5浏览0评论

I have a DLink DWR-921 router that works with mobile internet. It has an admin page http://ipaddress/sys_smsmsg.htm that allows to send sms via the SIM card that feeds the router. I am trying to bypass the GUI and send sms programmatically.

Request to send an sms looks like this:

from requests import session

with session() as c:
       c.get('http://'
            + ipaddress
            + '/sys_smsmsg.htm?csrftok='
            + token
            + '&Nsend=1&Nmsgindex=0&S801E2701='
            + number
            + '&S801E2801='
            + message)

where token is a value in a hidden input field on /sys_smsmsg.htm:

<input type="hidden" name="csrftok" value="468153">

This value is loaded by JavaScript from an XML file that the browser downloads along with the HTML.

function get_token(){
xmlDoc=loadXMLDocs("/csrf.xml");
if(xmlDoc.getElementsByTagName("token")[0].childNodes[0]!=null){
rv=xmlDoc.getElementsByTagName("token")[0].childNodes[0].nodeValue;
return rv;
}
}

The XML itself looks trivial:

<?xml version="1.0"?><csrf><token>667153</token></csrf>

But since requests library does not trigger JavaScript, all I see on the requested page is:

dw("<input type='hidden' name='csrftok' value='"+get_token()+"'>")

Is there any way to bypass JS and retrieve the XML file in a requests session? I know I can use Selenium with a headless browser, just want to make sure I'm not over-complicating it.

发布评论

评论列表(0)

  1. 暂无评论