PHP cURL如何添加用户代理值或克服服务器阻塞cURL请求的问题?
我正在传输一个对象数组。我在自己的服务器上有一个cURL客户端(提交者),在其他服务器上有一个侦听脚本,但我无法控制该脚本。然后我想,他们正在阻止传入的cURL请求,因为当我使用正常的HTMLPHP cURL如何添加用户代理值或克服服务器阻塞cURL请求的问题?,php,curl,http-headers,user-agent,Php,Curl,Http Headers,User Agent,我正在传输一个对象数组。我在自己的服务器上有一个cURL客户端(提交者),在其他服务器上有一个侦听脚本,但我无法控制该脚本。然后我想,他们正在阻止传入的cURL请求,因为当我使用正常的HTML进行测试时,它正在工作。但无论如何,不是通过卷曲 所以我认为他们对卷曲做了一些限制 那么我的问题是: 服务器能否限制/阻止传入请求 如果是这样,我可以在启动cURL脚本中欺骗/更改HTTP头(用户代理)吗 或者还有其他可能的故事吗 谢谢 服务器无法仅阻止cURL请求,因为它们只是HTTP请求。所以,更改cU
进行测试时,它正在工作。但无论如何,不是通过卷曲
所以我认为他们对卷曲做了一些限制
那么我的问题是:
谢谢 服务器无法仅阻止cURL请求,因为它们只是HTTP请求。所以,更改cURL的用户代理可以解决您的问题,因为服务器会认为您是通过UA中提供的浏览器进行连接的
$agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)';
$curl=curl_init();
curl_setopt($curl, CURLOPT_USERAGENT, $agent);
如果您仍然面临问题,请执行以下操作 一, 二, 注意:目录中需要一个COOKIES文件夹 三, 如果这样做不能解决问题,那么给出示例输入/输出/错误等。
因此,可以提供更精确的解决方案。php中curl-GET调用的示例。 变量中的ftp文件。 解决方案在Stackoverflow上。。。哪里 不是我的 顺便说一句,您需要能够从html中执行php代码 修改您的/etc/apache2/mods启用的“编辑”@mime.conf 如果你想这么做。。。 转到文件末尾并添加以下行: “AddType应用程序/x-httpd-php.html.htm” 在标记“”之前 使用“debian”下的“Apache2.4.23”和“PHP5.6.17-1”进行验证和测试 我选择在html文件中执行php,因为开发速度更快 示例代码开始:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
<?php
$host = "https://tgftp.nws.noaa.gov/data/observations/metar/decoded/CYHU.TXT";
$agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $host);
curl_setopt($curl, CURLOPT_USERAGENT, $agent);
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1) ;
curl_exec($curl);
$ftp_result=curl_exec($curl);
print_r($ftp_result);
//and the big work commencing,
//extracting text ...
$zelocation="";
$zedatetime="";
$zewinddirection="";
$zewindspeed="";
$zeskyconditions="";
$zetemp="";
$zehumidity="";
?>
</body>
</html>
我在尝试使用CURL登录网站时遇到了同样的问题,服务器拒绝了我的请求,直到我发送了
用户代理
标题和进入登录页面时返回的cookies,但是,如果您不熟悉CURL,可以使用此选项
$curl=newcurl();
$curl->setHeaders('user-agent'、'Mozilla/5.0(windowsnt 6.1;Win64;x64;rv:84.0)Gecko/20100101 Firefox/84.0');
//禁用SSL验证
$curl->setOpt(CURLOPT_SSL_VERIFYPEER,'0');
$curl->post($url,$data);
$response=$curl->getRawResponse();
你的名字很有趣。@srain LOL:D在这里,很抱歉不讲主题,但它实际上是中文的LOL!很抱歉我也离题了。但就连我也注意到,我的名字是用两种语言写的:dmaeans夏季派对?:-)是的,对于大多数中小型流量来说,这样做通常是不值得的。但是对于那些负载很重的站点,我看到了很多种过滤流量的方法。所以我相信他们会这么做。那么对我来说,我应该让他们检查什么呢(只需描述您的问题,并询问他们有关筛选规则以及如何避免被拒绝。
$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']);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
<?php
$host = "https://tgftp.nws.noaa.gov/data/observations/metar/decoded/CYHU.TXT";
$agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $host);
curl_setopt($curl, CURLOPT_USERAGENT, $agent);
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1) ;
curl_exec($curl);
$ftp_result=curl_exec($curl);
print_r($ftp_result);
//and the big work commencing,
//extracting text ...
$zelocation="";
$zedatetime="";
$zewinddirection="";
$zewindspeed="";
$zeskyconditions="";
$zetemp="";
$zehumidity="";
?>
</body>
</html>