0

我希望添加到我们本地网络的一个新功能是能够使用 PHP 从免费电子邮件服务(例如 Gmail、Yahoo 和 Hotmail)检索电子邮件。有些服务我们可以付费,但我宁愿自己动手!

我发现谷歌只有一个 API,而其他的没有。那么与我使用 CURL 检索电子邮件相关的问题是什么?

我什至使用 CURL 和 PHP 实现了 GMail 部分。

4

3 回答 3

2

为此目的对他们的网站进行屏幕抓取几乎肯定违反了他们的服务条款。如果他们重新设计您的网站,您用来解析电子邮件内容等的脚本也可能会发生灾难性的故障。

Yahoo、Gmail 和 Hotmail 都支持POP3,这是一种用于检索电子邮件的标准协议。为什么不使用它呢?

于 2009-04-11T22:38:09.860 回答
1

当有人给你一个 API 时,他们向你保证“如果你运行代码 X,Y 将会发生。当你筛选抓取时,提供商没有这样的承诺,而且许多提供商在他们的服务条款中有明确禁止的项目屏幕抓取。从技术角度来看,这意味着他们的页面/应用程序可能会发生更改,这些更改会破坏您的屏幕抓取,提供商会意外或有意地枯萎。这就是 CAPTCHA 存在的原因。

此外,这些应用程序越来越多地使用越来越多的“AJAX”风格架构,这意味着您致力于逆向工程其应用程序的工作方式,以及跟上每个应用程序所做的更改。

最后,好吧,你做错了。电子邮件本身就是一组协议。大多数提供商都可以通过 POP3 和 IMAP 访问电子邮件。我会研究破解 PHP 代码以与 POP/IMAP 服务器交互,这些服务器就像 API 一样,是一组承诺的行为。您还有一个优势,即为一个提供者编写的代码可能会为另一个提供者工作(稍作调整)。

于 2009-04-11T22:48:23.657 回答
0

我假设您有理由不使用 pop 协议,这是检索电子邮件的受支持标准方式。按照您的意愿进行操作是不受支持的,也可能不在提供商的使用条款中。

但是,如果没有验证码解决方案妨碍您,这在技术上是可行的。您必须为每个提供者编写不同的应用程序。如果他们改变了一些东西,你将不得不采用你的应用程序。

为了使它与 curl 一起工作,请务必收集它们在所有页面中提供给您的所有 cookie,并在每个请求中返回它们。

如果出现任何问题(以及开发问题),您可以使用一些工具(例如 windows 上的 proxomitron)分析 http 请求和答案,并使 curl 请求看起来越来越像浏览器请求,直到您成功。最后,他们无法通过浏览器将您的 curl 请求与人工请求区分开来。除了我之前说的验证码。

另一件事是您的请求之间的间隔,您可能会因为经常请求或两个请求之间没有暂停(人类无法做到)而被阻止。如果您怀疑这一点,请尝试在请求之间插入随机修改的暂停。

我可以想象他们在开发过程中阻止了您的帐户或 IP,在这种情况下,有必要更改 IP 和/或您使用的帐户。

于 2009-04-11T21:25:46.913 回答