Парсинг страницы в обход CloudFlare

648
22 декабря 2017, 02:43

Пытаюсь спарсить страницу сайта в обход CloudFlare, раньше на других сайтах выходило, но теперь при обращении к разделу /cdn-cgi/l/chk_jschl, не отдаются куки. Хотя на первой странице __cfduid, генерируется, что может быть не так?

Код:

htaccess

RewriteEngine on
RewriteRule . index.php [QSA,L]

index.php

<?
$id = urldecode($_SERVER['REQUEST_URI']);
if(strstr($id, 'chk_jschl')) {
    $cook = file_get_contents("aa.txt");
    if( $curl = curl_init() ) {
        curl_setopt($curl, CURLOPT_URL, "https://hitbtc.com" . $id);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_COOKIE, $cook);
        curl_setopt($curl,CURLOPT_ENCODING, '');
        curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36');
        curl_setopt($curl, CURLOPT_HTTPHEADER, array(   
        ':authority: hitbtc.com',
        ':method: GET',
        ':path: ' . $id,
        ':scheme: https',
        'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
        'accept-language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
        'referer: https://hitbtc.com/',
        'upgrade-insecure-requests: 1'
        ));
        curl_setopt($curl, CURLOPT_HEADER ,1);
        $out2 = curl_exec($curl);
        curl_close($curl);
        list($headers, $out) = explode("\r\n\r\n",$out2,2);
        echo $out2;
    }
} else {
    if( $curl = curl_init() ) {
        curl_setopt($curl, CURLOPT_URL, "https://hitbtc.com/");
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94  Safari/537.36');
        curl_setopt($curl,CURLOPT_ENCODING, '');
        curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        ':authority: hitbtc.com',
        ':method: GET',
        ':scheme: https',       
        'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
        'accept-language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
        'upgrade-insecure-requests: 1'
        ));
        curl_setopt($curl, CURLOPT_HEADER ,1);
        $out2 = curl_exec($curl);
        curl_close($curl);
        preg_match_all('/Set-Cookie: (.*?);/', $out2, $matches);
        file_put_contents("aa.txt",$matches[1][0]);
        echo $out2;
    }
}
?>
READ ALSO
Как склеить 3 картинки в 1 на php

Как склеить 3 картинки в 1 на php

Задача есть 3 изображения:

212
Как вывести данные таблицы

Как вывести данные таблицы

Есть таблица отпусков, там есть поле видПо виду отпуска я вытаскиваю все данные

177