【问题标题】:What are the problems associated with retrieving email using CURL?使用 CURL 检索电子邮件有哪些相关问题?
【发布时间】:2010-10-18 22:54:02
【问题描述】:

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

我发现 Google 只有一个 API,而其他的都没有。 我使用 CURL 检索电子邮件时会出现什么问题?

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

【问题讨论】:

    标签: php architecture curl implementation


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 啊,谢谢你的解释。这些是我害怕的事情,您提供了解决方案。
      【解决方案3】:

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

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

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

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

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

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

      【讨论】:

      • 是否允许使用 CURL 从这些服务提供商处检索电子邮件?或者任何形式的电子邮件检索?
      • 我会说这取决于他们的使用条款和他们的商业模式。垃圾邮件发送者还使用机器人来注册帐户和发送邮件,因此即使你是个好人,他们也可能会与之抗争。
      猜你喜欢
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 2020-12-25
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 2021-05-16
      相关资源
      最近更新 更多