网站阻止了来自我的网站托管和本地主机的PHP CURL调用,但阻止了来自其他主机的PHP CURL调用

时间:2020-06-28 17:17:05

标签: php curl

我在使用CURL连接到网页的Web主机上运行此PHP脚本:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://crewlink.someairline.com/crewlink/clApp?parameters=parameters');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');

curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');

$headers = array();
$headers[] = 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0';
$headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8';
$headers[] = 'Accept-Language: en-US,en;q=0.5';
$headers[] = 'Dnt: 1';
$headers[] = 'Connection: keep-alive';
$headers[] = 'Upgrade-Insecure-Requests: 1';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}

// do some stuff with $result;

curl_close($ch);

几天后,该连接被重定向到一个页面,该页面显示“我们的网站保护系统已检测到您网络中的意外行为,因此请您确认您不是机器人。”因此,我进行了一些测试,发现从本地主机(XAMPP)运行PHP脚本会导致相同的重定向,但是从其他Web主机运行该脚本将会成功并返回预期的结果。 如果我使用SSH进入网络托管计算机并从终端运行相同的脚本,我仍然会被重定向:

curl 'https://crewlink.someairline.com/crewlink/clApp?parameters=parameters' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1'

但是如果我是从我的个人计算机(也是我的本地主机)运行它,还是从一个AWS EC2实例运行它,则不是。

我还尝试在PHP脚本中设置一个经过验证的活动代理,以为重定向可以基于以下IP检测:

$proxy = "http://45.76.222.170:8080/";
curl_setopt($ch, CURLOPT_PROXY, $proxy);

但是仍然在我的Web主机和本地主机上,我被重定向,而在另一个我没有的Web主机上。 有人可以帮助我了解如何使它起作用,最重要的是为什么当CURL从PHP脚本运行时而不是从我的同一台计算机从终端运行时,为什么我会重定向?

0 个答案:

没有答案