Редактор темы

Curl и proxy - вопрос прогерам

drummer34

Команда форума
VIP Кинотрафик v2
Регистрация
24 Авг 2015
Сообщения
177
Рейтинг реакций
50
Баллы
28
Возраст
46
1/3
Автор темы
Короче, пользуюсь своим простым парсером на php.
хочу подключить curl через прокси, т.к. сайт kinopoisk.ru вчера забанил... и теперь выдает ошибку 301.

Кто знает где брать прокси? и как подключать?

Я беру на сайте http://spys.ru бесплатный анонимный (HIA) прокси, подключаю вот так:
CURLOPT_PROXY => '176.106.145.122:8080'
пробовал разные ip-адреса, все равно ошибка 301.

в то время как на другом хостинге этот код работает.

function file_get_contents_curlkp($kpurl) {

$curl = curl_init();
$proxy='176.106.145.122:8080';
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
$header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header[] = "Accept-Language: en-us,en;q=0.5";
$header[] = "Pragma: ";
curl_setopt_array($curl, array(
CURLOPT_URL => $kpurl,
CURLOPT_PROXY => '176.106.145.122:8080',
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0',
CURLOPT_HTTPHEADER => $header,
CURLOPT_REFERER => 'http://www.kinopoisk.ru',
CURLOPT_AUTOREFERER => true,
CURLOPT_FAILONERROR => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CONNECTTIMEOUT => 120,
CURLOPT_FOLLOWLOCATION => 0,
CURLOPT_HEADER => false,
CURLOPT_TIMEOUT => 20
));
$kpcontent = curl_exec($curl);
print_r(curl_getinfo($curl));
if($kpcontent === false) {
echo 'Ошибка curl: ' . curl_error($curl);
} else {
echo ' curl OK ';
}
curl_close($curl);
return $kpcontent;
}

$id = "222333";
$kp_url_film = "http://www.kinopoisk.ru/film/".$id."/";
$kpcontent = file_get_contents_curlkp( $kp_url_film );
var_dump($kpcontent);
 
а сколько ты запросов в сутки делал что тебя забанил?
 
Автор темы
точно не помню, где-то 100-200 запросов за 15 минут.
 
и теперь выдает ошибку 301.
Код 301, это не ошибка - это редирект. У них сменился протокол, раньше работали по http теперь по https правда у меня эта проблема была где то с недели 2 назад.

Помогли вот эти опции
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

Только парсить надо теперь через https
 
Короче вот чем я качаю:


Код:
function getContByUrl($url,$proxy=NULL){
                $ch=curl_init();
                curl_setopt($ch,CURLOPT_URL,$url);
                curl_setopt($ch,CURLOPT_TIMEOUT,10);
               curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.12) Gecko/".rand(10000000, 25000000)." Firefox/1.0.7");
                curl_setopt ($ch,CURLOPT_RETURNTRANSFER,1);
                curl_setopt($ch, CURLOPT_REFERER, "http://www.kinopoisk.ru/");
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
                if($proxy){
                    curl_setopt($ch, CURLOPT_PROXY, $proxy);
                }
             
                $headers = array(
                    "Content-type: text/xml;charset=\"utf-8\"",
                    "Accept: text/xml",
                    "Accept-Language: ru",
                    "Accept-Charset: utf-8",
                    "Accept-Encoding: deflate",
                    "Accept-Ranges: bytes",
                    "Cache-Control: no-cache",
                 );
                curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
                $content = curl_exec($ch);
                 return $content;
        }

В функции второй параметр как раз прокси, подавать в виде '176.106.145.122:8080'

правда сам работаю без проксей, но когда еще было http - пробовал, работает.
 
Код 301, это не ошибка - это редирект. У них сменился протокол, раньше работали по http теперь по https правда у меня эта проблема была где то с недели 2 назад.

Помогли вот эти опции
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

Только парсить надо теперь через https
почему у меня нет,работает все исправно
 
Автор темы
@Pavel, О спасибо тебе добр человек! Я даже не заметил, что протокол сменился. Твой код работает без всяких прокси!
просто надо прописать https
а это значит, что кинопоиск не забанил мой ip 🙂
 

Похожие темы Последние темы Популярные темы

Назад
Сверху