質問

私がローカル ネットワークに追加したい新しい機能は、PHP を使用して Gmail、Yahoo、Hotmail などの無料電子メール サービスから電子メールを取得する機能です。お金を払って利用できるサービスもありますが、自分でハックしたいと思っています。

Google には API だけがあり、残りには API がありません。 CURL を使用して電子メールを取得するだけでは、どのような問題が発生するのでしょうか?

CURL と PHP を使用して GMail 部分も実装しました。

役に立ちましたか?

解決

その目的でウェブサイトをスクリーンスクレイピングすることは、ほぼ確実に利用規約に違反します。サイトのデザインが変更された場合、電子メールの内容などを解析するために使用しているスクリプトが変更されます。おそらく壊滅的に壊れる可能性もあります。

Yahoo、Gmail、Hotmail をすべてサポート ポップ3, 、電子メールを取得するための標準プロトコル。代わりにそれを使用してみてはいかがでしょうか?

他のヒント

誰かがあなたに API を与えるとき、彼らは「コード X を実行すると Y が起こる」と約束しています。スクリーン スクレイピングを行う場合、プロバイダーからそのような約束はなく、多くのプロバイダーの利用規約には、スクリーン スクレイピングを明示的に禁止する項目があります。技術的な観点から見ると、これは、プロバイダーによって偶然または意図的に画面のスクレイピングが中断されるような変更がページ/アプリケーションに加えられる可能性があることを意味します。これが CAPTCHA が存在する理由です。

また、これらのアプリケーションでは「AJAX」スタイルのアーキテクチャがますます使用されるようになり、各アプリケーションが行う変更に対応するだけでなく、アプリケーションがどのように動作するかをリバースエンジニアリングすることに専念することになります。

最後に、まあ、あなたのやり方は間違っています。電子メールはそれ自体が一連のプロトコルです。ほとんどのプロバイダーには、POP3 および IMAP 経由で電子メールにアクセスする方法があります。API と同様に、一連の動作が約束されている POP/IMAP サーバーと対話するために、PHP コードをハッキングする方法を検討してみます。また、あるプロバイダー用に作成されたコードは、(多少の調整を加えれば) 別のプロバイダーでも機能する可能性が高いという利点もあります。

電子メールを取得するためにサポートされている標準的な方法である Pop プロトコルを使用しない理由があると思います。希望どおりに実行することはサポートされておらず、プロバイダーの使用条件にも適用されない可能性があります。

ただし、キャプチャの解決が邪魔にならない場合は、技術的には可能です。プロバイダーごとに異なるアプリケーションを作成する必要があります。彼らが何かを変更した場合には、あなたのアプリケーションを採用する必要があります。

これをcurlで動作させるには、すべてのページで提供されるすべてのCookieを必ず収集し、すべてのリクエストでそれらを返すようにしてください。

何か問題が発生した場合 (開発でも)、何らかのツール (例:Windows では proxomitron)、成功するまで、curl リクエストがブラウザリクエストとまったく同じように見えるようにしていきます。結局のところ、ユーザーの CURL リクエストとブラウザを介した人間のリクエストを区別するために彼らができることは何もありません。前に述べたようにキャプチャを除いて。

もう 1 つはリクエスト間の間隔です。リクエストを頻繁に行う場合、または 2 つのリクエストの間に一時停止がない場合 (人間には不可能です)、ブロックされる可能性があります。これが疑われる場合は、リクエスト間にランダムに変更された一時停止を挿入してみてください。

開発中にアカウントや IP がブロックされることは想像できますが、この場合は、作業している IP やアカウントを変更する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top