我有以下情况:
希望这是有道理的。从本质上讲,我的脚本通过创建HTTP请求,获取数据以及在请求时提供数据来充当真实数据的代理。
这是我的Python
#!/usr/bin/python
import base64, cgitb, sys, urllib2
cgitb.enable()
print "Content-Type: text/xml"
print
username = "username"
password = "password"
url = "http://s6.voscast.com:7158/admin.cgi?mode=viewxml"
auth = base64.encodestring('%s:%s' % (username, password))[:-1]
request = urllib2.Request(url)
request.add_header("Authorization", "Basic %s" % auth)
try:
handle = urllib2.urlopen(request)
except IOError, e:
print "Something Failed."
sys.exit(1)
print handle.read()
非常简单,对吧?不幸的是,它没有用。如果我在浏览器中访问该网站并输入相同的用户名和密码,则可以正常使用;我可以看到XML树。
相反,我在stdout
中得到以下输出:
Content-Type: text/xml
ICY 404 Resource Not Found
icy-notice1:<BR>SHOUTcast Distributed Network Audio Server/Linux v1.9.8<BR>
icy-notice2:The resource requested was not found<BR>
我做错了什么?在浏览器中给出相同的URL,用户名和密码,一切正常。我错过了什么?
答案 0 :(得分:2)
它也可能需要User-Agent或Accepts标头。
尝试使用Firefox中的Firebug或LiveHTTP标头或Chrome开发工具比较/复制浏览器发送的某些http标头。比较您的hexed密码以确认它是否正确。然后一次添加一个标题,直到找到问题为止。