如何使用PHP Curl或Guzzel客户端使用动态用户代理头

ia2d9nvy  于 2022-11-28  发布在  PHP
关注(0)|答案(2)|浏览(370)

我是PHP的新手,正在尝试调用REST服务。我可以在PHP中使用Curl或Guzzle客户端。后来我在Mozilla和Chrome浏览器中调用此服务。
问题是Guzzle和Curl没有将实际的User-Agent头作为请求头转发到后端服务。
默认狂饮User-Agent header is Guzzle/ver curl/ver PHP/ver
我知道我们可以在Curl和Guzzle中添加自定义/硬编码的头文件。但是我不想硬编码。

<?php 
require './vendor/autoload.php';
$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'http://sample.com');
$data = json_decode($res->getBody(), true); 
//echo  $res->getBody()  
?> 

<html>
<body>
    <p>Body  is  <?php echo  $res->getBody() ?> </p>
</body>
</html>

当我从Chrome/Mozilla/移动的/Safari调用PHP服务时,我希望将相应的user-agent头作为请求头发送到后端服务。
有没有办法做到这一点呢?

3htmauhk

3htmauhk1#

PHP有一个内置的数组,用于存储来自request -$_SERVER['HTTP_USER_AGENT']的数据。
然后,您可以使用headers选项设置user-agent gzzle使用。

$client->request('GET', '/get', [
    'headers' => [
        'User-Agent' => $_SERVER['HTTP_USER_AGENT'],
    ]
]);
hc8w905p

hc8w905p2#

对于GuzzleHttp\客户端:

$client = new GuzzleHttp\Client([
    'headers' => [
        'User-Agent' => $_SERVER['HTTP_USER_AGENT'],
    ]
]);
$res = $client->request('GET', 'http://sample.com');

$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'http://sample.com', [
    'headers' => [
        'User-Agent' => $_SERVER['HTTP_USER_AGENT'],
    ]
]);

对于php cUrl:

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL            => 'http://sample.com',
  CURLOPT_TIMEOUT        => 0,
  CURLOPT_CUSTOMREQUEST  => 'GET',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_USERAGENT      => $_SERVER['HTTP_USER_AGENT'],
));
curl_setopt($curl, CURLOPT_USERAGENT, $agent);

$response = curl_exec($curl);

curl_close($curl);
echo $response;

希望这对某人有帮助

相关问题