• DiDom php, как спарсить сайт?

    Витя Подприклопольный, это даже не защита, до защиты еще не дошли. тут тупо не прошли проверку ssl сертификата
  • Как прикинуться браузером и скачать страницу?

    dklight
    @dklight Автор вопроса
    dollar, неа не проверяет, если я 1 раз зайду на страницу, то получу легитимную сессию и она отработает до 12 часов. т.е. можно будет парсить другие любые страницы.
    но нужно то же самое, но автоматически, без похода в браузер
  • Как получить значение cookie как ответ от сервера?

    dklight
    @dklight Автор вопроса
    DanKud, вот новый код:
    $cookie_jar = Yii::$app->getBasePath() . '/web/_ssuper_cccoookkie.txt';
            //echo $cookie_jar;
    
            $c = curl_init();
            $url = Yii::$app->params['parse2_siteUrl'];
            $url = Yii::$app->params['parse2_siteUrl2'];
            curl_setopt($c, CURLOPT_URL, $url);
            curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36");
            curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($c, CURLINFO_HEADER_OUT,1);
            curl_setopt($c, CURLOPT_HEADER,1);
            $referer = 'https://technopoint.ru';
            curl_setopt($c, CURLOPT_REFERER, $referer);
            //curl_setopt($c, CURLOPT_NOBODY,1);
    
            // 
            $cookie = 'PHPSESSID=cb29e0b7be713cef7f3fb98bf1dd1209;';
            //curl_setopt($c, CURLOPT_COOKIE, $cookie);
    
            curl_setopt($c, CURLOPT_FOLLOWLOCATION, true );
            curl_setopt($c, CURLOPT_AUTOREFERER, true );
            curl_setopt($c, CURLOPT_COOKIESESSION, true );
            curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_jar);
            curl_setopt($c, CURLOPT_COOKIEFILE, $cookie_jar);
            $cohh = [];
            $cohh[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8';
            // последующие 2 строки вызывают появление кракозябр
            //$cohh[] = 'Accept-Encoding: gzip, deflate, br';
            //$cohh[] = 'Accept-Language: ru,en-US;q=0.9,en;q=0.8';
            $cohh[] = 'Cache-Control: max-age=0';
            $cohh[] = 'Connection: keep-alive';
            $cohh[] = 'Upgrade-Insecure-Requests: 1';
            //$cohh[] = 'Cookie: PHPSESSID=eceeb02bb74949d27e02bfb7b932de4e; city_path=astrahan; path=/; domain=.technopoint.ru';
    
            curl_setopt($c, CURLOPT_HTTPHEADER, $cohh);
    
            curl_setopt($c, CURLOPT_VERBOSE,1);
            $curl_fn = "curl_errors.txt";
            $curl_log = fopen($curl_fn, 'w');
            curl_setopt($c, CURLOPT_STDERR, $curl_log);
    
            $page = curl_exec($c);
            $curl_info = curl_getinfo($c);
            echo $page;
            echo Debug::d($curl_info['request_header'],'CURL_INFOOO');
    
            curl_close($c);

    на этот раз вроде бы все хорошо, вижу какие заголовки посылаются и возвращаются, поставил заголовки так, как делает браузер, но все равно не получается спарсить страницу, получаю 403 в html коде.
  • Как получить значение cookie как ответ от сервера?

    dklight
    @dklight Автор вопроса
    DanKud, благодарю за ответ, у меня был подобный план, сделаю и отпишусь
  • Как получить значение cookie как ответ от сервера?

    dklight
    @dklight Автор вопроса
    DanKud, все таки выяснил, проблема не с моей стороны, а со стороны сервера, это наверное своеобразная защита.
    Чтобы это понять делаю следущее: открываю вручную либо курлом главную страницу целевого сайта.
    далее выполняю:
    ...
    $cookie = 'PHPSESSID=5cc2931ecc62ed9fe23320ff78a634b7'; // тут PHPSESSID, полученный из первого шага.
    curl_setopt($c, CURLOPT_COOKIE, $cookie);
    $url = 'sitename.ru/some/anather/directory';
    ...

    Код не работает, то есть тут я пытаюсь открыть любую другую страницу целевого сайта, отличную от главной. Однако, стоит лишь вручную открыть любую страницу из главной и перезагрузить скрипт, то он уже способен спарсить все что угодно. Т.е. как я понял, чтобы активировать PHPSESSID, полученный изначально, надо перейти на любую другую страницу, теперь осталось узнать как это сделать программным способом )
  • Как получить значение cookie как ответ от сервера?

    dklight
    @dklight Автор вопроса
    DanKud, опытным путем установил, что страница выдается если дать ей правильный:
    Cookie: PHPSESSID=0b64372c14b238265c1e7e0aa232f20a
    Нужно только его получить, и... внимание, если подсунуть курлу тот кукис, что он же и формирует, то ничего не выходит, а если же хотя 1 бы один раз открыть с браузера страницу, отличную от главной целевого сайта и скопировать оттуда пресловутый PHPSESSID, то используя его можно спарсить желанные тысячи страниц с товарами.
    Если есть идеи, подкиньте
  • Как получить значение cookie как ответ от сервера?

    dklight
    @dklight Автор вопроса
    DanKud, Уже в нескольких местах советуют поступить способом, подобному вашему:
    curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_jar);
    curl_setopt($c, CURLOPT_COOKIEFILE, $cookie_jar);

    Этот код изначально был прост и понятен, но он попросту не работает, попробую с другим ресурсом поработать подобным образом.

    В любом случае благодарю за труды!
  • Как получить значение cookie как ответ от сервера?

    dklight
    @dklight Автор вопроса
    DanKud, вы видимо, не донца внимательно читали мое последнее сообщение.
    А впрочем, //curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_jar); что с комментом, что без это не работает

    А что касается
    $curl_info3 = curl_getinfo($c, CURLINFO_COOKIELIST);
    которая загружает передаваемые куки в переменную. Так просто выведите ее на экран print_r($curl_info3); после curl_close($c); и увидите куки, которые отправляются.

    то $curl_info3 пустой.
  • Как получить значение cookie как ответ от сервера?

    dklight
    @dklight Автор вопроса
    DanKud, этот код я закоментил, потому что заметил, что при 403, в файл записывается меньше денных куки чем нужно. А определяю работу вот так:
    $url = Yii::$app->params['parse2_siteUrl']; // https://yandex.ru
    $url = Yii::$app->params['parse2_siteUrl2']; // https://yandex.ru/some/subdirecory

    так вот, я комментирую 2 строку тут, и получаю куки с полным набором, после коментирую строку получения новых куки, убераю потом коммент с 2 строки тут и запускаю, получаю 403 в хтмл ответе.
    А впрочем, //curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_jar);
    что с комментом, что без это не работает

    самое интересное,
    $url = Yii::$app->params['parse2_siteUrl2'];
    $cookie = 'PHPSESSID=0b64372c14b238265c1e7e0aa232f20a; city_path=astrahan; current_path=66b73d92019263641cf950c8eed05b57d1ea2dde703d1d4a0c9f2e8d9e158e0fa%3A2%3A%7Bi%3A0%3Bs%3A12%3A%22current_path%22%3Bi%3A1%3Bs%3A36%3A%223556b6b7-4a77-11e2-bc07-00155d030b1f%22%3B%7D; cartUserCookieIdent_v2=4299b98b019edb17580ab3f1554a8e85e4f6c63d9368dbe52b3081f40381c77ba%3A2%3A%7Bi%3A0%3Bs%3A22%3A%22cartUserCookieIdent_v2%22%3Bi%3A1%3Bs%3A36%3A%229d79c2d2-c38c-43e8-9f16-3d30008ce6c5%22%3B%7D; _csrf=5fa9d70ba14536d8b203aaf221f168ffd0eaeb7d6da1300ae711108257a26d47a%3A2%3A%7Bi%3A0%3Bs%3A5%3A%22_csrf%22%3Bi%3A1%3Bs%3A32%3A%22WUpQMovnCc36WEr28zZjLYFtNCTakGjL%22%3B%7D; phonesIdent=2c88213f7cabb9122db7de3aad1f2361123ccacaf79fba7f5cdf3101d5506064a%3A2%3A%7Bi%3A0%3Bs%3A11%3A%22phonesIdent%22%3Bi%3A1%3Bs%3A36%3A%222cabf107-e449-471b-847a-54576a479677%22%3B%7D; orderCheckoutIdent=c19978b79ae4055c71b11e469ffc0b2b273b860dc56a7a0faaac0b000a127c7ca%3A2%3A%7Bi%3A0%3Bs%3A18%3A%22orderCheckoutIdent%22%3Bi%3A1%3Bs%3A36%3A%229d79c2d2-c38c-43e8-9f16-3d30008ce6c5%22%3B%7D; catalog-filter-extended-features=4f702a7d3ff3c2643a211375b60218830cc0e259a920de017195097f468ac7e8a%3A2%3A%7Bi%3A0%3Bs%3A32%3A%22catalog-filter-extended-features%22%3Bi%3A1%3Ba%3A1%3A%7Bs%3A36%3A%2217a89a04-1640-11e5-a679-00259074e77d%22%3Ba%3A0%3A%7B%7D%7D%7D; catalog-drawer-view-params=dc9a33992ad9d75ceb7115aee26a57423922a29f500e9d796dad59165b29a183a%3A2%3A%7Bi%3A0%3Bs%3A26%3A%22catalog-drawer-view-params%22%3Bi%3A1%3Ba%3A3%3A%7Bs%3A6%3A%22sortBy%22%3Bs%3A1%3A%221%22%3Bs%3A7%3A%22groupBy%22%3Bs%3A6%3A%22avails%22%3Bs%3A4%3A%22mode%22%3Bs%3A4%3A%22list%22%3B%7D%7D';
            //$cookie = 'PHPSESSID=66afed6e3a62161958690f55d3b844d9; cartUserCookieIdent_v2=ae2f950ec74eb7fb138701214e40724f3bc44161724b2fb6f7639e82b498dcbfa%3A2%3A%7Bi%3A0%3Bs%3A22%3A%22cartUserCookieIdent_v2%22%3Bi%3A1%3Bs%3A36%3A%225fa84fb8-771d-48a2-b3b7-b3a0a6e9bb62%22%3B%7D; city_path=astrahan; current_path=66b73d92019263641cf950c8eed05b57d1ea2dde703d1d4a0c9f2e8d9e158e0fa%3A2%3A%7Bi%3A0%3Bs%3A12%3A%22current_path%22%3Bi%3A1%3Bs%3A36%3A%223556b6b7-4a77-11e2-bc07-00155d030b1f%22%3B%7D; orderCheckoutIdent=f6d282c2b4c93aada48c81ebc354a6351c4624f17c1f1583b166c41006d8e79ca%3A2%3A%7Bi%3A0%3Bs%3A18%3A%22orderCheckoutIdent%22%3Bi%3A1%3Bs%3A36%3A%225fa84fb8-771d-48a2-b3b7-b3a0a6e9bb62%22%3B%7D; phonesIdent=39452a82a3d6d922363e6aec35b5d9f12710b1618e487d1017727fcd40962c9fa%3A2%3A%7Bi%3A0%3Bs%3A11%3A%22phonesIdent%22%3Bi%3A1%3Bs%3A36%3A%223e5da18c-c183-495b-b5d7-8f8f849eabf6%22%3B%7D; catalog-filter-extended-features=4f702a7d3ff3c2643a211375b60218830cc0e259a920de017195097f468ac7e8a%3A2%3A%7Bi%3A0%3Bs%3A32%3A%22catalog-filter-extended-features%22%3Bi%3A1%3Ba%3A1%3A%7Bs%3A36%3A%2217a89a04-1640-11e5-a679-00259074e77d%22%3Ba%3A0%3A%7B%7D%7D%7D; catalog-drawer-view-params=dc9a33992ad9d75ceb7115aee26a57423922a29f500e9d796dad59165b29a183a%3A2%3A%7Bi%3A0%3Bs%3A26%3A%22catalog-drawer-view-params%22%3Bi%3A1%3Ba%3A3%3A%7Bs%3A6%3A%22sortBy%22%3Bs%3A1%3A%221%22%3Bs%3A7%3A%22groupBy%22%3Bs%3A6%3A%22avails%22%3Bs%3A4%3A%22mode%22%3Bs%3A4%3A%22list%22%3B%7D%7D';
            curl_setopt($c, CURLOPT_COOKIE, $cookie);
    
            //curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_jar);
            //curl_setopt($c, CURLOPT_COOKIEFILE, $cookie_jar);

    если сделать так, то работает, в переменной куки - куки, который я вручную скопировал с браузера с вкладки сеть
  • Как получить значение cookie как ответ от сервера?

    dklight
    @dklight Автор вопроса
    DanKud, я делал как вы писали, но строка
    $super_cookie_fn = __DIR__ .'/super_cookie_fn.cookie'; /* путь до файла с куками */

    не работает, вместо него поставил так:
    $cookie_jar = Yii::$app->getBasePath() . '/web/_ssuper_cccoookkie.txt';

    и теперь файл создается, вот весь код:
    //$cookie_jar = tempnam('./','cookie');
            $cookie_jar = Yii::$app->getBasePath() . '/web/_ssuper_cccoookkie.txt';
            echo $cookie_jar;
            //file_put_contents($cookie_jar,'');
    
            $c = curl_init();
            $url = Yii::$app->params['parse2_siteUrl'];
            $url = Yii::$app->params['parse2_siteUrl2'];
            curl_setopt($c, CURLOPT_URL, $url);
            curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36");
            curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($c, CURLOPT_HEADER,1);
            //curl_setopt($c, CURLOPT_NOBODY,1);
    
            //$cookie = 'PHPSESSID=a89905de5da83405986a1a9d15851bb6; city_path=astrahan; current_path=66b73d92019263641cf950c8eed05b57d1ea2dde703d1d4a0c9f2e8d9e158e0fa%3A2%3A%7Bi%3A0%3Bs%3A12%3A%22current_path%22%3Bi%3A1%3Bs%3A36%3A%223556b6b7-4a77-11e2-bc07-00155d030b1f%22%3B%7D; cartUserCookieIdent_v2=9a1baeee77af682d9c779ef566959f25ee03ae386cc88bbc4294fa6d4700c49fa%3A2%3A%7Bi%3A0%3Bs%3A22%3A%22cartUserCookieIdent_v2%22%3Bi%3A1%3Bs%3A36%3A%227b99809e-81a8-4989-9fc2-b0775145bdd6%22%3B%7D; _csrf=251ed98148bb6bf96e1d85dcce13c3da0dc31f85f35ebd606ad294302e1e24aca%3A2%3A%7Bi%3A0%3Bs%3A5%3A%22_csrf%22%3Bi%3A1%3Bs%3A32%3A%22taV-YA4IU7m1s0hAPZ6Gsu43dqPzjpCI%22%3B%7D; phonesIdent=58f1f0980f03116eda28b5856cb643d2bcf1b1b2c2e1b70f7cb038637bc9c60da%3A2%3A%7Bi%3A0%3Bs%3A11%3A%22phonesIdent%22%3Bi%3A1%3Bs%3A36%3A%22a7ad3682-57ea-4cc2-ac82-083a5d42b65d%22%3B%7D; orderCheckoutIdent=b921736aa96c3503304619b49e75ca3685697aa22c1f15d670dcdee56bbcec54a%3A2%3A%7Bi%3A0%3Bs%3A18%3A%22orderCheckoutIdent%22%3Bi%3A1%3Bs%3A36%3A%227b99809e-81a8-4989-9fc2-b0775145bdd6%22%3B%7D;';
            //$cookie = 'PHPSESSID=0b64372c14b238265c1e7e0aa232f20a; city_path=astrahan; current_path=66b73d92019263641cf950c8eed05b57d1ea2dde703d1d4a0c9f2e8d9e158e0fa%3A2%3A%7Bi%3A0%3Bs%3A12%3A%22current_path%22%3Bi%3A1%3Bs%3A36%3A%223556b6b7-4a77-11e2-bc07-00155d030b1f%22%3B%7D; cartUserCookieIdent_v2=4299b98b019edb17580ab3f1554a8e85e4f6c63d9368dbe52b3081f40381c77ba%3A2%3A%7Bi%3A0%3Bs%3A22%3A%22cartUserCookieIdent_v2%22%3Bi%3A1%3Bs%3A36%3A%229d79c2d2-c38c-43e8-9f16-3d30008ce6c5%22%3B%7D; _csrf=5fa9d70ba14536d8b203aaf221f168ffd0eaeb7d6da1300ae711108257a26d47a%3A2%3A%7Bi%3A0%3Bs%3A5%3A%22_csrf%22%3Bi%3A1%3Bs%3A32%3A%22WUpQMovnCc36WEr28zZjLYFtNCTakGjL%22%3B%7D; phonesIdent=2c88213f7cabb9122db7de3aad1f2361123ccacaf79fba7f5cdf3101d5506064a%3A2%3A%7Bi%3A0%3Bs%3A11%3A%22phonesIdent%22%3Bi%3A1%3Bs%3A36%3A%222cabf107-e449-471b-847a-54576a479677%22%3B%7D; orderCheckoutIdent=c19978b79ae4055c71b11e469ffc0b2b273b860dc56a7a0faaac0b000a127c7ca%3A2%3A%7Bi%3A0%3Bs%3A18%3A%22orderCheckoutIdent%22%3Bi%3A1%3Bs%3A36%3A%229d79c2d2-c38c-43e8-9f16-3d30008ce6c5%22%3B%7D; catalog-filter-extended-features=4f702a7d3ff3c2643a211375b60218830cc0e259a920de017195097f468ac7e8a%3A2%3A%7Bi%3A0%3Bs%3A32%3A%22catalog-filter-extended-features%22%3Bi%3A1%3Ba%3A1%3A%7Bs%3A36%3A%2217a89a04-1640-11e5-a679-00259074e77d%22%3Ba%3A0%3A%7B%7D%7D%7D; catalog-drawer-view-params=dc9a33992ad9d75ceb7115aee26a57423922a29f500e9d796dad59165b29a183a%3A2%3A%7Bi%3A0%3Bs%3A26%3A%22catalog-drawer-view-params%22%3Bi%3A1%3Ba%3A3%3A%7Bs%3A6%3A%22sortBy%22%3Bs%3A1%3A%221%22%3Bs%3A7%3A%22groupBy%22%3Bs%3A6%3A%22avails%22%3Bs%3A4%3A%22mode%22%3Bs%3A4%3A%22list%22%3B%7D%7D';
            //curl_setopt($c, CURLOPT_COOKIE, $cookie);
    
            //curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_jar);
            curl_setopt($c, CURLOPT_COOKIEFILE, $cookie_jar);
            curl_setopt($c, CURLOPT_VERBOSE,1);
    //        $curl_fn = "curl.txt";
    //        $curl_log = fopen($curl_fn, 'w');
    //        curl_setopt($c, CURLOPT_STDERR, $curl_log);
    
            $page = curl_exec($c);
            $curl_info = curl_getinfo($c);
            $curl_info2 = curl_getinfo($c, CURLINFO_HEADER_OUT);
            $curl_info3 = curl_getinfo($c, CURLINFO_COOKIELIST);
            echo $page;
            echo Debug::d($curl_info,'CURL_INFOOOO');
            //echo Debug::d($curl_info3,'CURL_INFOOOO_____@@@@@3333');
            //echo Debug::d($curl_info2,'CURL_INFOOOO_____@@@@@222');
            //echo Debug::d($page);
            curl_close($c);


    но теперь другая проблема, файл который создан, не подхватывается, т.е. не отрабатывает эта строка:
    curl_setopt($c, CURLOPT_COOKIEFILE, $cookie_jar);
  • Как получить значение cookie как ответ от сервера?

    dklight
    @dklight Автор вопроса
    DanKud,
    $cookie_jar = tempnam('./','cookie');
            $cookie_jar = './super_cookie_jar.txt';
    
            $c = curl_init(Yii::$app->params['parse2_siteUrl']);
            //$c = curl_init(Yii::$app->params['parse2_siteUrl2']);
            curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36");
            //curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_jar);
            curl_setopt($c, CURLOPT_COOKIEFILE, $cookie_jar);
            //curl_setopt($c, CURLOPT_, $cookie_jar);
            $page = curl_exec($c);
            curl_close($c);
            //echo Debug::d($page);


    на этот раз создаются файлы примерно так именуются, cooDE0F.tmp
    почему так не знаю, задал другое в начале скрипта...

    и все равно не работает, открывает только главную страницу, а в самой временном файле пусто
  • Как получить значение cookie как ответ от сервера?

    dklight
    @dklight Автор вопроса
    DanKud, значок доллара убрал, но не суть. Файл не создается банально
  • Как получить значение cookie как ответ от сервера?

    dklight
    @dklight Автор вопроса
    интересный код, но он у меня не заработал:

    ob_start();
            {
                $curl = curl_init();
                curl_setopt($curl, CURLOPT_URL, $url);
                curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36");
    
                if ($cookie !== ''){
                    curl_setopt($curl, CURLOPT_COOKIE, $cookie);
                }
                curl_setopt($curl, CURLOPT_REFERER, null);
    
                $super_cookie_fn = '$super_cookie_fn.cookie';
                curl_setopt($curl, CURLOPT_COOKIEJAR, $super_cookie_fn);
                curl_setopt($curl, CURLOPT_COOKIEFILE, $super_cookie_fn);
    
                curl_exec($curl);
                curl_close($curl);
    
                //$new_cookie = curl_getinfo($curl, CURLINFO_COOKIELIST);
                //echo Debug::d($new_cookie);
    
                $parse = ob_get_contents();
            }
            ob_end_clean();
  • Как получить значение cookie как ответ от сервера?

    dklight
    @dklight Автор вопроса
    как я говорил выше, открываю нужные страницу, и через вкладку сеть получаю куки, после вбиваю его в курл
  • Как устранить проблемы обрыва DSL соединения?

    dklight
    @dklight Автор вопроса
    Благодарю за помощь. Уже в который раз рассказываете качественные ответы.
    Выполню все по пунктам. Как только получу нужный результат отпишусь
  • Как устранить проблемы обрыва DSL соединения?

    dklight
    @dklight Автор вопроса
    1 день все было чисто, но сегдя получил такое:
    mp_oy8ztsvoree4xrpv1yardy1k.png
    что исходя из написанного выше не есть хорошо, что посоветуете для решения?
  • Как устранить проблемы обрыва DSL соединения?

    dklight
    @dklight Автор вопроса
    спасибо за качественные ответы!
    теперь жду обрыва
  • Как устранить проблемы обрыва DSL соединения?

    dklight
    @dklight Автор вопроса
    Fixid, такой пункт есть
    p54icxk6pu6btrysw4jipo6chuu.png
    но возможности правки не заметил пока что
  • Как устранить проблемы обрыва DSL соединения?

    dklight
    @dklight Автор вопроса
    Fixid, в справках нашел только 'SNR Margin для VDSL'. Выходит это не мой случай в случае асуса, может быть другие роутеры это умеют
  • Как устранить проблемы обрыва DSL соединения?

    dklight
    @dklight Автор вопроса
    предварительный поиск SNR ничего не дал (DSL-N14U B1). еще ищу...