开发者社区> 问答> 正文

如何在Python中连接到需要我登录并拥有自签名证书的站点?

我已经看到了一些可以帮助我在这方面取得进展的点点滴滴,但是我试图将它们联系起来,而我现在还没有。

简而言之,我正在尝试通过登录连接到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中使用能够处理我所描述的登录类型的东西。但我也需要同样的方法来忽略证书是自签名的事实。我看到每个人都有一个解决方案,但不会同时处理这两个问题。

那么我该如何处理这种类型的登录?(它与第二个问题的登录问题相同)我如何同时忽略证书问题?

展开
收起
游客6qcs5bpxssri2 2019-08-28 21:05:48 808 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    我已尝试使用具有自签名证书的本地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/

    2019-08-28 21:06:15
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载