3

PHPを使用してDOMツリーにWebサイトをロードしています。を使用して送信されるユーザーエージェントを変更する方法はありDOMDocument::loadHTMLFile()ますか?

function parseThis($url)
{
  $html = new DOMDocument();
  $html->loadHtmlFile( $url );

  return $html
}
4

2 に答える 2

11

user_agentの値を変更します。これは、などphp.iniのhttpストリームラッパーを使用するもので送信する必要があります。DOMDocument::loadHtmlFile(), file_get_contents()

$fake_user_agent = "Mozilla/5.0 (X11; Linux i686) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11";
ini_set('user_agent', $fake_user_agent);

サーバー構成で許可されている場合は.htaccess、設定することでApacheでも同じことができます。php_value user_agent

于 2012-07-15T22:10:43.397 に答える
4

そうですね、最善の方法は、別の方法でコンテンツを取得し、後でドキュメントを読み込むことだと思います。これは、cURLを使用して行うことができます。

$useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";

$ch = curl_init();

// set user agent
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab content from the website
$content = curl_exec($ch);

// load the content in your dom
$html = new DOMDocument();
$html->loadHTML($content);
于 2012-07-15T22:11:59.893 に答える