5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CURLOPT_HTTPHEADER と CURLOPT_USERAGNET の両方でユーザエージェントを指定した場合、CURLOPT_HTTPHEADERで指定したものが送信される

Posted at

以下、PHP7.0.3にて検証

CURLOPT_HTTPHEADERとCURLOPT_USERAGENT両方でユーザエージェントを指定した場合

CURLOPT_HTTPHEADERを先に書く場合.php
<?php
$ch = curl_init('google.com');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-HOGE: FUGA','user-agent: ua1']);
curl_setopt($ch, CURLOPT_USERAGENT, 'ua2');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_exec($ch);

var_dump(curl_getinfo($ch, CURLINFO_HEADER_OUT));

// 以下出力結果
string(80) "GET / HTTP/1.1
Host: google.com
Accept: */*
X-HOGE: FUGA
user-agent: ua1
CURLOPT_USERAGENTを先に書く場合.php
<?php
$ch = curl_init('google.com');
curl_setopt($ch, CURLOPT_USERAGENT, 'ua2');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-HOGE: FUGA','user-agent: ua1']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_exec($ch);

var_dump(curl_getinfo($ch, CURLINFO_HEADER_OUT));

// 以下出力結果
string(80) "GET / HTTP/1.1
Host: google.com
Accept: */*
X-HOGE: FUGA
user-agent: ua1

このように、CURLOPT_HTTPHEADERを先に書いた場合でもCURLOPT_USERAGENTを先に書いた場合でも、CURLOPT_HTTPHEADERで指定したユーザエージェント文字列が送信されます。

CURLOPT_USERAGENTのみでユーザエージェントを指定した場合

CURLOPT_USERAGENTのみの場合.php
<?php
$ch = curl_init('google.com');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-HOGE: FUGA']);
curl_setopt($ch, CURLOPT_USERAGENT, 'ua2');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_exec($ch);

var_dump(curl_getinfo($ch, CURLINFO_HEADER_OUT));

// 以下出力結果
string(80) "GET / HTTP/1.1
Host: google.com
User-Agent: ua2
Accept: */*
X-HOGE: FUGA

このように、CURLOPT_USERAGENT で指定した文字列がUser-Agentリクエストヘッダとして送信されます。

CURLOPT_HTTPHEADERでユーザエージェントを指定する場合とCURLOPT_USERAGENTを使う場合の違い

CURLOPT_USERAGENTを使うと
User-Agent: 指定したユーザエージェント
となります。

一方、CURLOPT_HTTPHEADERでは
curl_setopt($ch, CURLOPT_HTTPHEADER, ['user-agent' => 'ua']);
とすれば
user-agent: ua
となり、
curl_setopt($ch, CURLOPT_HTTPHEADER, ['UsEr-AgEnT: ua1']);
とすれば
UsEr-AgEnT: ua1
となります。

つまり、CURLOPT_HTTPHEADERを使えばヘッダ名の大文字小文字を自由に設定できます。

5
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?