代码之家  ›  专栏  ›  技术社区  ›  Brad

如何代表第三方筛选受密码保护的网站?

  •  2
  • Brad  · 技术社区  · 17 年前

    我想写一个程序,分析你的梦幻棒球队,并通知你建议的行动,可能每天多次。问题是,你不是在我的网站上玩梦幻棒球,你不是在雅虎,CBS,ESPN等网站上玩。

    在大多数网站上,幻想团队和联盟都不是公开的,因此您必须登录并成为联盟成员才能看到联盟中的团队。

    我所需要的只是将每个站点上的团队页面的纯HTML发送到我的服务器,然后我可以在那里解析和分析文件并发送用户通知。

    问题是,我需要用户名/密码组合才能轻松地将此数据发送到我的服务器。 什么时候? 我需要它,我认为会有很多人不想把他们的yahoo/espn/cbs密码委托给我。

    我想出了几种可能的方法来解决这个问题:

    1. 最明显的方法是要求他们的团队所在的站点提供证书。然后我可以通过编程方式登录并请求我需要的数据。我猜很多人会愿意给我他们的证书,而他们中的一些人不会那么多。

    2. 编写一个桌面客户端,然后用户下载。客户机将需要他们的凭证,但是它基本上可以做与基于服务器的版本相同的事情,登录,请求页面,然后将页面发送回我的服务器。区别在于他们的密码不需要离开桌面。他们的计算机需要打开,这个程序运行,这个方法才能工作。

    3. 编写导航到所需页面的浏览器加载项,使用以前登录时保存的cookie登录到该网站,然后将该页面发送回我的服务器。这并不要求我的软件要求他们输入密码,但如果cookie过期,我就会被托管,而且我对浏览器附加组件也不太了解。

    我相信还有其他的选择,但这些是我目前为止提出的。

    我有两个问题: 1。这类任务的其他可能性是什么? 2.第2条。我是否过高估计了人们不愿意给我他们的雅虎(例如)密码?选项(1)是否高于显而易见的选项?

    在评论中有人建议我尝试雅虎Pipes,这看起来是一个很有前途的建议,所以我对此进行了一些探讨。看看现在 this 我不认为这是一个选择。所以,看起来我会选择1。

    3 回复  |  直到 13 年前
        1
  •  2
  •   Rais Alam    13 年前

    这是我几年前遇到的一个问题,当时我想做同样的事情。我们的网站是 http://benchcoach.com 我们考虑的选择是:

    最初,我们考虑获取用户的凭证和登录名。然后我们会登录并搜集他们的联赛和球队信息。问题是,在阅读了几个不同的服务条款后,这肯定会违反服务条款。除此之外,雅虎!肯定是我们正在考虑的网站之一,他们的用户有电子邮件(我们可以在那里访问敏感数据)和雅虎!钱包。此外,对于Yahoo/ESPN/CBS来说,按IP地址阻止我们的程序化登录非常简单。

    我们采用的解决方案(不是100%满意,但似乎可行)是要求用户安装一个书签(如Delicious、Digg或Reddit),将当前的HTML页面发布到我们的服务器,在那里我们可以分析数据并加载数据库。如果他们仍然登录到他们的yahoo/espn/cbs帐户,我们将直接将他们引导到页面,否则,这些站点将提示进行身份验证。再次单击书签,会将页面发布到我们的服务器。

    这种方法的优点是我们从未收集任何人的证书,因此任何安全问题都会得到缓解。其次,雅虎/ESPN/CBS将无法阻止访问我们的服务,因为我们永远不会直接连接到他们的服务器,而是用户的浏览器将其浏览器的内容发布到我们的服务器。

    问题在于,要将一个页面发布到我们的站点,只需点击2次。对于头对头联盟,我们需要3-4页,这样我们的用户需要6-8次点击才能将他们的联盟与我们的服务器同步。我们仍在寻找这方面的选择。

    一个重要的提示是,我在一年前的一次会议上遇到了雅虎梦幻足球网站的产品经理。我们谈到了我们是如何获取雅虎数据的,他也证实,获取证书会违反他们的操作系统,他们可能会阻止我们。虽然我不认为他们会这样做,但如果他们关闭账户,就很难投入时间和精力来开发这个网站,从而阻止我们的网站并激怒用户。

        2
  •  2
  •   Zxaos    17 年前

    一个可能更复杂的答案可以通过(例如)雅虎管道来实现。

    假设您创建了一个管道,它提示用户输入他们的凭证,并为他们提供一个包含他们的刮取数据的URL。他们在自己的站点中输入这个URL,而不必直接提供他们的凭证。更好的是,为了安全起见,可以在输入任何信息之前检查管道实际上在做什么。

    缺点是增加了复杂性(以及必须编写和维护管道)。尽管如此,您可以直接从您的站点提供到已发布管道的链接,以使事情尽可能简单。

        3
  •  1
  •   Bhushan Bhangale    17 年前

    方案1是显而易见的选择。信任您网站的人将提供详细信息。在屏幕抓取时,没有其他方法可以登录到其他站点。