私は、Facebook.com が禁止されている場所で、ユーザーに完全に表示される必要がある Web サイトに取り組んでいます。そのため、私の Facebook のようなボックス プラグインは表示されません。(この質問をローカライズしないために、すべてのクライアント側のファイアウォールをバイパスし、ボックス プラグインのように、私の Web サイトで単純な HTML として表示したいとします (私の Web サイトは禁止されていません))。
サーバーは Facebook.com にアクセスでき、(サーバーのコンピューターで) curl を使用してプラグインのコンテンツを取得し、そのページのコンテンツを実行して、Web サイトの任意の部分で単純な HTML として表示できると考えました。だから私はちょうど次のスクリプトを書いた:
<?
$c = curl_init('https://www.facebook.com/plugins/likebox.php?href=http%3A%2F%2Fwww.facebook.com%2Fstevejobs&width=292&height=258&colorscheme=dark&show_faces=true&border_color&stream=false&header=false');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: www.facebook.com', 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
', 'Accept-Language: en-us,en;q=0.5', 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'Accept-Encoding: gzip, deflate'));
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt(CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$html = curl_exec($c);
if (curl_error($c))
die(curl_error($c));
$status = curl_getinfo($c, CURLINFO_HTTP_CODE);
curl_close($c);
?>
驚くべきことに、上記のコードはhttps://www.youtube.com (ここでも禁止されています) またはhttps://www.google.comに対して機能しますが、その URL または単にhttps://www.facebook.comでは機能しません私のサーバー。
別の質問: Facebook.com の代わりにhttps://www.youtube.comを使用しても、YouTube.com で使用されている CSS ファイルまたは Javascript ファイルを取得できません (それらも禁止されており、クライアントがダウンロードできないため)。また)。テキストと一部の画像しか表示されません。また、CSS および Javascript ファイルのコンテンツを curl に自動的に取得させたいと考えています。
Facebook.com から同様のボックス プラグインのコンテンツを取得するために YQL も使用しましたが、次の結果が得られました。
YQL ステートメント:
select * from html where url = 'https://www.facebook.com/plugins/likebox.php?href=http%3A%2F%2Fwww.facebook.com%2Fstevejobs&width=292&height=258&colorscheme=dark&show_faces=true&border_color&stream=false&header=false'
結果:
<?xml version="1.0" encoding="UTF-8"?>
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"
yahoo:count="0" yahoo:created="2011-11-11T11:41:10Z" yahoo:lang="en-US">
<diagnostics>
<publiclyCallable>true</publiclyCallable>
<url
error="Redirected to a robots.txt restricted URL: https://www.facebook.com/plugins/likebox.php?href=http%3A%2F%2Fwww.facebook.com%2Fstevejobs&amp;width=292&amp;height=258&amp;colorscheme=dark&amp;show_faces=true&amp;border_color&amp;stream=false&amp;header=false"
execution-start-time="1" execution-stop-time="6"
execution-time="5" http-status-code="403"
http-status-message="Forbidden" proxy="DEFAULT"><![CDATA[https://www.facebook.com/plugins/likebox.php?href=http%3A%2F%2Fwww.facebook.com%2Fstevejobs&width=292&height=258&colorscheme=dark&show_faces=true&border_color&stream=false&header=false]]></url>
<user-time>6</user-time>
<service-time>5</service-time>
<build-version>23377</build-version>
</diagnostics>
<results/>
</query>
facebook.com の robots.txt に問題があるようです。上記の YQL ステートメントは他の Web サイト ( https://www.youtube.comやhttps://www.yahoo.comなど) でも機能することに注意してください。
前もって感謝します