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

夏期劇*_*期劇場 15 php user-agent curl http-headers

我正在传输一个Object Array.我有自己的服务器上卷曲的客户端(提交)听脚本其他的服务器上,哪一次不是我的控制之下.然后我认为,他们阻止了传入的cURL请求,因为当我使用普通的HTML进行测试时<form>,它正在运行.但无论如何不是通过cURL.

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

那我的问题是:

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

谢谢!

小智 24

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

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/');
Run Code Online (Sandbox Code Playgroud)

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']);
Run Code Online (Sandbox Code Playgroud)

注意:您需要目录中的COOKIES文件夹.

3.

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
Run Code Online (Sandbox Code Playgroud)

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


sra*_*ain 20

  $agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)';
  $curl=curl_init();
  curl_setopt($curl, CURLOPT_USERAGENT, $agent);
Run Code Online (Sandbox Code Playgroud)


小智 5

  1. 在服务器端,我们可以通过识别http请求中的头字段(包括refer,cookie,user-agent等),ip地址,访问频率来阻止某些请求.在大多数情况下,机器生成的请求通常与人类请求有所不同,例如,没有引用和cookie,或者具有更高的访问频率,我们可以编写一些规则来拒绝这些请求.

  2. 根据1,您可以尝试使用更多的IP地址填充标题字段,使用随机和较慢的频率来模拟实际请求.(听起来像是攻击)

  3. 通常,使用较低的频率并且不会对其服务器造成重负荷,遵循其访问规则,它们很少会阻止您的请求.