单个获取
function get_redirect_url($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36');
$content = curl_exec($ch);
$redirect_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$redirect_url = ($redirect_url == $url) ? $url : $redirect_url;
curl_close($ch);
return $redirect_url;
}
curl模拟多线程同时获取多个
function get_redirect_url($links) {
//curl模拟多线程
$mh = curl_multi_init();
foreach ($links as $i => $link) {
$conn[$i] = curl_init($link);
curl_setopt($conn[$i], CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($conn[$i], CURLOPT_REFERER, $link);
curl_setopt($conn[$i], CURLOPT_TIMEOUT, 60); //超时时间
curl_setopt($conn[$i], CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($conn[$i], CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($conn[$i], CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3551.3 Safari/537.36');
curl_multi_add_handle($mh, $conn[$i]);
}
$active = null;
do {
curl_multi_exec($mh, $running);
curl_multi_select($mh);
} while ($running > 0);
$result = [];
//获取page内容
foreach ($links as $i => $link) {
$redirect_url = curl_getinfo($conn[$i], CURLINFO_EFFECTIVE_URL);
curl_close($conn[$i]);
$result[$i] = ($redirect_url == $link) ? $link : $redirect_url;
}
return $result;
}