Пишу парсер, использую curl. Скрипт получает группу ссылок с нужной страницы (используя curl и регулярки) и записывает их в массив $match, далее такой код:
foreach ($match[0] as $url) {
//echo $url: - проверка. Выводит url.
$curl = curl_init();
curl_setopt($curl, CURLOPT_PROXY, "127.0.0.1:9050"); // Использую Tor-прокси.
curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_URL, 'https://'.$url); // Если писать вручную, без foreach, то работает.
$urlcont = curl_exec($curl);
var_dump($urlcont); }
Все ссылки рабочие, но var_dump выводит string(0) "". Причем выводит не false - ошибок нет.
Что интересно, если взять любую ссылку из массива и вне foreach вставить в CURLOPT_URL, то всё отлично работает. Проблема возникает именно при переборе массива.
Я пробовал ставить задержки, использовать multiCURL, посылать useragent, использовать куки - полный ноль.
URL вида site.com/index.php?page=post&id=43 - я думал, что дело в пост-запросе и даже отправлял его через CURLOPT_POSTFIELDS, но снова не то.