【问题标题】:Controlling an SSL Website with Python使用 Python 控制 SSL 网站
【发布时间】:2012-03-16 04:03:17
【问题描述】:

我正在尝试自动化获取我大学当前学生记录的过程。在浏览器中,该过程涉及输入我大学的 URL,然后单击登录链接,然后我会进入 https:// URL 页面,我输入密码和用户名。然后从那里再输入一两个链接并阅读页面上的一些文本。现在,我的问题是,我怎样才能做到这一点,但以自动化的方式,所以我的记录将显示在命令行上。我认为 URL 中的 https:// 表示它使用 SSL 是否有某些库可以处理这个问题?另外,登录页面上的“提交”按钮我很确定使用 JavaScript,是否有库来处理这个?

我确定我在问题描述中遗漏了某些内容,所以如果您不理解我的问题或需要更多信息,请询问。

附言。我对 Internet 协议并不精通,而且我对 Python 也很陌生。事实上,我开始为这个项目研究它。但是,我精通 C 语言,而且我对 C++ 也很擅长。

提前致谢。 迈克尔,

【问题讨论】:

    标签: javascript python ssl web controls


    【解决方案1】:

    您不必模仿您在浏览器中执行的所有操作。

    首先。 https/ssl 是没有问题的,只要不用验证(好像不用),urllib2.urlopen 会处理。

    第二。当您单击“提交”时,浏览器会向服务器发送一个请求,其中包含您的用户名、密码和可能的其他一些数据。该请求的类型可能是 POST。作为响应服务器可能会向您发送一个带有会话 ID 的 cookie。因此,您需要做的就是调查对服务器的请求的确切格式(例如使用 FireBug),并从服务器的响应中获取 cookie。

    第三。只需使用该 cookie 来浏览网站上的页面。 This 可能会有所帮助。

    附:如您所见,答案中有太多“可能”一词 - 确切的身份验证过程可能与上述不同,您必须自己调查。

    【讨论】:

    • 您应该避免使用 HTTPS 的 urllib2,因为它不会验证证书(请参阅链接文档中的红色框),这会使连接容易受到 MITM 攻击。 (同样适用于httpclient,除非您自己添加代码来验证证书。)像 pycurl 这样的东西会是更好的选择。
    【解决方案2】:

    Roman 的回答是个好建议:当您的脚本可以直接调用 HTTP 方法时,您通常不需要像真正的用户一样行事。

    但是,如果您不习惯对站点所需的 HTTP 操作进行逆向工程,则可以使用Selenium,这是一种模拟与网页交互的工具。 Selenium 通常被 Web 应用程序开发人员用来测试他们的应用程序,但它也可以用作现有网站的自动化客户端。

    【讨论】:

      猜你喜欢
      • 2017-06-04
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多