Python HTTP POST到打印机ulogin.cgi
此脚本应连接到打印机(受HTTP Auth保护),并从其XML/HTML中获取信息:Python HTTP POST到打印机ulogin.cgi,python,http,authentication,printing,Python,Http,Authentication,Printing,此脚本应连接到打印机(受HTTP Auth保护),并从其XML/HTML中获取信息: import requests printer_url = "http://*redacted*/wcd/ulogin.cgi" payload = {'username':'foo', 'password':'bar'} session = requests.session() r = requests.post(printer_url, data=payload} print (r.text) pri
import requests
printer_url = "http://*redacted*/wcd/ulogin.cgi"
payload = {'username':'foo', 'password':'bar'}
session = requests.session()
r = requests.post(printer_url, data=payload}
print (r.text)
print(r.text)返回为空白,如果我只是简单地打印(r),我可以看到我得到一个500错误
这是打印机源的外观:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="top.xsl" type="text/xsl"?>
<MFP>
<SelNo>Auto</SelNo>
<LangNo>En</LangNo>
<Service><Setting><AuthSetting><AuthMode><AuthType>None</AuthType><ListOn>false</ListOn>
<PublicUser>true</PublicUser>
<BoxAdmin>false</BoxAdmin>
</AuthMode><TrackMode><TrackType>None</TrackType></TrackMode></AuthSetting><MiddleServerSetting><ControlList><ArraySize>0</ArraySize></ControlList><Screen><Id>0</Id></Screen></MiddleServerSetting>
<PswcForm>HtmlFlash</PswcForm>
</Setting></Service><LangDummy>false</LangDummy><FuncVer>2</FuncVer>
</MFP>
自动的
EN
不假
真的
假的
非100
HtmlFlash
谬误2
我已尝试将URL指向页面源“http://redacted/wcd/system.xml“CGI登录按钮的实际位置,但我最终得到了如下打印(r.text):
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="autherror.xsl" type="text/xsl"?>
<MFP>
<Function>err</Function>
<LangNo>En</LangNo>
<Message>
<Item Code="Err_2">ReloginAttempt</Item>
</Message>
<Redirect>/wcd/index.html</Redirect>
<MsgVoid>false</MsgVoid></MFP>
犯错误
EN
重新登录尝试
/wcd/index.html
假的
有什么想法吗?非常感谢你的建议
连接到打印机(受HTTP身份验证保护)
据我所知,通过传递用户名/密码作为有效负载是不起作用的
请尝试类似的方法:
r = requests.post(printer_url, auth=HTTPBasicAuth('user', 'pass'))
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# basic http auth. Depending your system,
# might require HTTPDigestAuth instead
print (r.text)