• Почему simple_html_dom.php один сайт парсит, а другой нет?

    gzhegow
    @gzhegow
    aka "ОбнимиБизнесмена"
    d:\OpenServer>curl "https://www.maxidom.ru/catalog/smesiteli/filter/item_firm-is-505a006bf69e69c71d23b5ca06faa83d/apply/?repIDchanged=4&amount=100" -v
    
    *   Trying 95.213.244.197:443...
    * Connected to www.maxidom.ru (95.213.244.197) port 443 (#0)
    * schannel: disabled automatic use of client certificate
    * ALPN: offers http/1.1
    * ALPN: server accepted http/1.1
    > GET /catalog/smesiteli/filter/item_firm-is-505a006bf69e69c71d23b5ca06faa83d/apply/?repIDchanged=4&amount=100 HTTP/1.1
    > Host: www.maxidom.ru
    > User-Agent: curl/7.83.1
    > Accept: */*
    >
    * Mark bundle as not supporting multiuse
    < HTTP/1.1 302 Found
    < Server: nginx
    < Date: Mon, 15 Aug 2022 12:19:49 GMT
    < Content-Type: text/html; charset=UTF-8
    < Transfer-Encoding: chunked
    < Connection: keep-alive
    < X-Powered-By: PHP/7.1.33-44+0~20211119.61+debian10~1.gbp448fbe
    < P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA"
    < X-Powered-CMS: Bitrix Site Manager (daa31dd015896c419c3750efb37325d9)
    < Set-Cookie: PHPSESSID=nWRt3aUxn56jtZd4ZrA1vkh81L5wtU3P; path=/; domain=maxidom.ru; HttpOnly
    < Expires: Thu, 19 Nov 1981 08:52:00 GMT
    < Cache-Control: no-store, no-cache, must-revalidate
    < Pragma: no-cache
    < Set-Cookie: MAXI_LOC_ID=4; expires=Wed, 14-Sep-2022 12:19:49 GMT; Max-Age=2592000; path=/
    < Set-Cookie: maxidom_SALE_UID=1945123973; expires=Thu, 10-Aug-2023 12:19:49 GMT; Max-Age=31104000; path=/; domain=maxidom.ru
    < Location: https://www.maxidom.ru/catalog/smesiteli/filter/item_firm-is-505a006bf69e69c71d23b5ca06faa83d/apply/index.php?amount=100
    <
    * Connection #0 to host www.maxidom.ru left intact


    У первого сайта - редирект стоит со старта.

    И хотя вы вроде поставили FOLLOW_LOCATION / true, но что-то пошло не так...

    Бывает, что надо заголовок юзерагента воткнуть, через него защиту делают максимально примитивную.
    Бывает, что нужно смотреть какие данные в Google Developer Console страница отсылает, чтобы получить в ответ верстку, там иногда верстка выдается только если user_auth_id требуется.
    Бывает, что там SSL и если не поставить SSL_VERIFY_PEER / false оно не загребает контент, т.е. пытается проверить подлинность и не может, т.к. на локале на винде сертификаты не настроены, а настраивать их ну немногие умеют, проще false поставить

    Много ситуаций.
    Ответ написан
    3 комментария