PHP cURL 如何添加用户代理值或克服服务器阻塞 cURL 请求?

2022-08-30 16:50:52

我正在传输对象数组。我在自己的服务器上有一个cURL客户端(提交者),在其他人的服务器上有一个监听脚本,哪个不在我的控制之下。然后我认为在那里,他们正在阻止传入的cURL请求,因为当我使用正常的HTML进行测试时,它正在工作。但无论如何都不是通过cURL。<form>

所以我认为他们对cURL做了一些限制。

那么我在这里的问题是:

  1. 服务器可以限制/阻止 cURL 传入请求吗?
  2. 如果是这样,我可以在启动cURL脚本中欺骗/更改HTTP标头(用户代理)吗?
  3. 还是有其他可能的故事?

谢谢!


答案 1

如果仍然遇到问题,请执行以下操作。

1.

$config['useragent'] = 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0';

curl_setopt($curl, CURLOPT_USERAGENT, $config['useragent']);
curl_setopt($curl, CURLOPT_REFERER, 'https://www.domain.com/');

2.

$dir                   = dirname(__FILE__);
$config['cookie_file'] = $dir . '/cookies/' . md5($_SERVER['REMOTE_ADDR']) . '.txt';

curl_setopt($curl, CURLOPT_COOKIEFILE, $config['cookie_file']);
curl_setopt($curl, CURLOPT_COOKIEJAR, $config['cookie_file']);

注意:目录中需要一个 COOKIES 文件夹。

3.

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

如果这样做不能解决问题,那么给出样本输入/输出/错误/等。因此,可以提供更精确的解决方案。


答案 2
  $agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)';
  $curl=curl_init();
  curl_setopt($curl, CURLOPT_USERAGENT, $agent);

推荐