Python HTTP POST到打印机ulogin.cgi

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

此脚本应连接到打印机(受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)
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)