2

我想编写一个程序来分析你的梦幻棒球队并通知你推荐的行动,可能每天多次。问题是,你不是在我的网站上玩梦幻棒球,而是在雅虎、cbs 或 espn 等网站上玩。

在大多数这些网站上,梦幻球队和联赛是不公开的,因此您必须登录并成为联赛成员才能查看联赛中的球队。

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

问题是我需要用户名/密码组合才能在需要时轻松地将这些数据发送到我的服务器而且我认为会有很多人不想将他们的 yahoo/espn/cbs 密码委托给我。

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

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

  2. 编写一个桌面客户端,然后用户下载该客户端。客户端需要他们的凭据,但它基本上可以做与基于服务器的版本完全相同的事情,登录,请求页面,并将页面发送回我的服务器。不同之处在于他们的密码永远不需要离开他们的桌面。他们的计算机需要打开,并且该程序需要运行才能使此方法起作用。

  3. 编写导航到我需要的页面的浏览器插件,使用从以前登录保存的 cookie 登录到站点,然后将页面发送回我的服务器。这不需要我的软件询问他们的密码,但如果 cookie 过期,我会感到很沮丧,而且我对浏览器插件了解不多。

我敢肯定还有其他选择,但这些是我迄今为止想出的。

我有两个问题: 1. 这种类型的任务还有哪些其他可能性?2. 我是否高估了人们不愿意给我他们的雅虎(例如)密码?选项(1)是否高于显而易见的选择?

评论中建议我尝试使用 yahoo 管道,这看起来是一个很有希望的建议,所以我对其进行了一些探索。现在看了这个,我不认为这是一个选择。所以,看起来我会选择选项 1。

4

3 回答 3

2

使用(例如)雅虎管道可能会完成一个可能更复杂的答案。

假设您创建了一个管道,提示用户输入他们的凭据,并为他们提供一个包含他们抓取的数据的 url。他们在他们的站点中输入此 URL,而不必直接提供他们的凭据。更好的是,对于具有安全意识的人来说,可以在输入任何信息之前检查管道实际在做什么。

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

于 2009-04-29T07:27:03.300 回答
2

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

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

我们确定的解决方案(不是 100% 满意,但似乎确实有效)是要求我们的用户安装一个小书签(如美味、digg 或 reddit),它将当前的 html 页面发布到我们的服务器,我们可以在那里解析数据并加载我们的数据库。如果他们仍然登录到他们的 Yahoo/ESPN/CBS 帐户,我们会将他们直接引导到页面,否则,这些站点会提示进行身份验证。再次单击小书签,会将页面发布到我们的服务器。

这种方法的优点是我们从未收集过任何人的凭据,因此可以减轻对安全性的任何担忧。其次,这将使 Yahoo/ESPN/CBS 无法阻止对我们服务的访问,因为我们永远不会直接连接到他们的服务器,而是用户的浏览器会将他们浏览器的内容发布到我们的服务器。

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

一个重要的提示是,我在一年前的一次会议上遇到了 Yahoo Fantasy Football 网站的产品经理。我们讨论了我们是如何获取雅虎数据的,他确认获取凭据会违反他们的服务条款,他们可能会阻止我们。虽然我不认为他们会这样做,但如果只是为了让他们阻止我们的网站并通过关闭他们的帐户来惹恼用户,就会很难投入时间和精力来开发它。

于 2009-09-11T05:10:48.923 回答
1

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

于 2009-04-29T06:50:31.517 回答