我已经看到了一些可以帮助我在这方面取得进展的点点滴滴,但是我试图将它们联系起来,而我现在还没有。
简而言之,我正在尝试通过登录连接到TiVo,因此我可以在设备上获取录制的xml文件。我已经尝试找到在URL中包含用户和密码的方法,但这似乎不起作用。当我在Chrome中输入网址时,我会收到用户名和密码的请求者:
登录到ISP的路由器或防火墙时,我常常看到这一点。我确信这是一个司空见惯的事情,但我不了解HTTP请求知道如何处理它。我也知道这是一个问题,因为这个页面要我登录,但SSL证书是自签名的。
一旦我通过身份验证请求,我就会获得所需的数据。我看到这个问题是关于忽略证书问题,这些问题涉及在使用urllib2时处理认证检查。第一个和选定的答案对我没有帮助,因为它表示urllib2不会检查认证的真实性。120多个upvotes的答案更多地解决了对证书的这种担忧。
我也看到了关于登录的这个问题,这也解决了我的部分问题。我不明白这个答案是否在讨论使用我需要帮助的同类登录。我也没有看到如何结合两个问题的答案,因为他们使用两种不同的方法从URL中检索数据。
我也找到了使用wget的解决方案:
wget --no-check-certificate --http-user=tivo --http-password=your-MAK-here -O nowplaying.xml "https://192.168.2.103/TiVoConnect? Command=QueryContainer&Container=%2FNowPlaying&Recurse=Yes" 我试着在调试模式下看看它做了什么。我希望,不知何故,用户名和密码只是嵌入在URL中,但现在我看到它们在初始联系之后仍未传递,以响应来自目标系统的验证请求。
我需要能够在Python中使用能够处理我所描述的登录类型的东西。但我也需要同样的方法来忽略证书是自签名的事实。我看到每个人都有一个解决方案,但不会同时处理这两个问题。
那么我该如何处理这种类型的登录?(它与第二个问题的登录问题相同)我如何同时忽略证书问题?
我已尝试使用具有自签名证书的本地Bitbucket实例进行以下操作。
import httplib import ssl from requests import Session from bs4 import BeautifulSoup as bs
server = 'https://bitbucket.xxx.xxx' #connection = httplib.HTTPSConnection(server, '443', timeout=60, context=ssl.SSLContext(ssl.PROTOCOL_TLSv1))
with Session() as s: site = s.get('%s/login' % server, timeout=60, verify=False) bs_content = bs(site.content, "html.parser") #token = bs_content.find("input", {"name":"csrf_token"})["value"] login_data = {"username": "xxx", "password": "xxx"} s.post("%s/login" % server, login_data) home_page = s.get(server) print(home_page.content) 参考:https://linuxhint.com/logging_into_websites_python/
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。