Сообщение CURL не получает такой же ответ, как отправка формы на странице - PullRequest
0 голосов
/ 21 марта 2020

У меня есть разрешение с сайта, чтобы очистить его. Я использую CURL и xpath для захвата страниц и очистки данных о продукте. Этот веб-сайт только что изменил его, поэтому варианты продуктов находятся в выпадающем списке Когда пользователь выбирает опцию, он отправляет сообщение на ту же страницу с кучей данных формы и снова получает почти целую страницу, которую он загружает. Для меня важно то, что он загружает цену варианта продукта, а затем в раскрывающемся списке выбирается вариант.

У меня есть все данные формы в виде полей, которые я передаю в POSTFIELDS curopt. Я передаю все заголовки в CUROPT_HTTPHEADER. НО, когда html возвращается, у него есть цена по умолчанию и никакие выбранные опции. Что я делаю не так ???

        $cW = curl_init($theURL);

        $headers = array(
                        'Accept' => '*/*',
                        'Accept-Encoding' => 'gzip, deflate, br',
                        'Accept-Language' => 'en-US,en;q=0.9',
                        'Cache-Control' => 'no-cache',
                        'Connection' => 'keep-alive',
                        'Content-Length' => '62988',
                        'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8',
                        'Cookie' => 'bunch of cookie info',
                        'Host' => 'www.thewebsite.com',
                        'Origin' => 'https://www.thewebsite.com',
                        'Referer' => "$theURL",
                        'Sec-Fetch-Dest' => 'empty',
                        'Sec-Fetch-Mode' => 'cors',
                        'Sec-Fetch-Site' => 'same-origin',
                        'X-MicrosoftAjax' => 'Delta=true',
                        'X-Requested-With' => 'XMLHttpRequest',
                        'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36',
                        );

        curl_setopt($cW, CURLOPT_HEADER, false);
        curl_setopt($cW, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($cW, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($cW, CURLOPT_TIMEOUT, 10);
        curl_setopt($cW, CUROPT_POST, 1);
        curl_setopt($cW, CUROPT_POSTFIELDS, $postFields);

        // Grab the data.
        $html = curl_exec($cW);

$ postFields - это массив всех полей записей. Я попытался запустить его через оба из них:

   return json_encode($fields);
//   return http_build_query($fields, '', '&');
...