PHP Curl无法访问站点,匹配Postman请求头后恢复正常的问题
解决PHP Curl无法正常访问https://juegaenlinea.ec的问题
用普通浏览器和Postman都能正常打开https://juegaenlinea.ec,但直接用PHP Curl发起请求时会出现异常。后来把请求头配置成和Postman一致的内容,PHP Curl就能正常获取响应了。
以下是可以正常运行的代码:
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://juegaenlinea.ec', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 100, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'User-Agent: cherry', 'Host: juegaenlinea.ec' ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
这个站点应该做了请求合法性校验,默认PHP Curl的请求头(比如默认User-Agent是PHP-CURL/xxx这类标识)不被站点认可。补充上和Postman一致的关键请求头(比如自定义User-Agent、明确的Host),就能通过站点的校验,正常拿到响应。
内容的提问来源于stack exchange,提问作者Ismayil Isayev
相关产品推荐
相关产品推荐

