@Ruplex

Как обойти ошибку получения необходимого содержимого при использовании CURL?

Здравствуйте, никак не получается перейти на второй шаг регистрации у сайта amway.ru.

Как происходит регистрация у того сайта:
1. 1 шаг регистрации на главном домене (https://www.amway.ru/reg-customer-registration?flo...
2. происходит редирект на поддомен (https://forms.amway.ru/sponsoring_rwd_ru/1?rendere...
3. 3 шага продолжения регистрации на поддомене.

Действия, которые мне удалось совершить:
1. получить капчу;
2. отправить POST запрос (с введённой капчей и заполненными полями) на первую форму регистрации (главный домен).

Но после того, как я правильно ввожу капчу, у меня выходит ошибка (https://yadi.sk/i/b5taBrLrtANmA). А по логике, я должен получить «Header: Location...» на поддомен «forms.amway.ru».

Может быть я что-то упускаю (заголовки пропустил или ещё что-то)? → Есть идеи (через браузер регистрация проходит)?

Код метода отправки запроса при помощи CURL:
private function send_form($url, $fields, $referer = 'https://www.amway.ru/reg-customer-registration?flow.flow=reg_customer_registration'){
           
            $ch = curl_init();
           
            curl_setopt($ch, CURLOPT_URL, $url);
           
            // откуда пришли на эту страницу
            curl_setopt($ch, CURLOPT_REFERER, $referer);
           
            // Заголовки браузера
//          curl_setopt($ch, CURLOPT_HTTPHEADER, array(
//              'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
//'Accept-Encoding:gzip, deflate, br',
//'Accept-Language:ru,en-US;q=0.8,en;q=0.6',
//'Cache-Control:max-age=0',
//'Connection:keep-alive',
//'Content-Length:306',
//'Content-Type:application/x-www-form-urlencoded',
////'Cookie:cart-content=; CTSESSION=AAAAAgABAEilyheKgl9VeBdAeWxta2PM7qjiKe00d0g9hwclFaPgDAZN7x4t7S6jb5tS+AgTwNWTcrL6IF2VjvB5clIdoNmN4+lRbu9XM/8=; CMSSESSIONID=MnwXl5SCV8UxH7-F+JuVPg__.aolacn-prodru4; s_vnum=1470678338211%26vn%3D2; JSESSIONID=0001FbhoM5WN8yuw1TB2A50Yc8a:1alqnjea5; s_cc=true; s_gttc_r=1468103174371; sc.ASP.NET_SESSIONID=ckmtv31e0qars04qr4kssmwv; sc.Status=8; s_sq=agaglobalwebprod%2Cagaeiawebruprod%3D%2526pid%253Damway%25253Aru%25253Areg-customer-registration%2526pidt%253D1%2526oid%253Dhttps%25253A%25252F%25252Fwww.amway.ru%25252Freg-customer-registration%25253Fflow.flow%25253Dreg_customer_registration%252523%2526ot%253DA; s_ppv=amway%253Aru%253Areg-customer-registration%2C94%2C37%2C1643; s_fid=602F696A11FB139A-0FA602B6A732A7B8; s_invisit=true; beforeUnloadTime=1468103351384',
//'Host:www.amway.ru',
//'Origin:https://www.amway.ru',
//'Referer:https://www.amway.ru/reg-customer-registration?flow.flow=reg_customer_registration',
//'Upgrade-Insecure-Requests:1',
//'User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'
//          ));
           
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
            curl_setopt($ch, CURLOPT_TIMEOUT, 30);
            curl_setopt($ch, CURLOPT_VERBOSE, true);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
            curl_setopt($ch, CURLINFO_HEADER_OUT, true);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding: gzip, deflate, br',
'Accept-Language: ru,en-US;q=0.8,en;q=0.6',
'Cache-Control: max-age=0',
'Connection: keep-alive',
'Content-Type: application/x-www-form-urlencoded',
                'Host: www.amway.ru',
'Origin: https://www.amway.ru',
'Referer: https://www.amway.ru/reg-customer-registration?flow.flow=reg_customer_registration',
'Upgrade-Insecure-Requests: 1',
'User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'
            ));
            curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
           
            // отсылаем серверу COOKIE полученные от него при авторизации
//          curl_setopt($ch, CURLOPT_COOKIE, $this->ArrayToCookie(array(
//              's_cc' => 'true',
//              's_invisit' => 'true',
//              'sc.Status' => '8',
//              's_fid' => '1C398AE6725DF782-34D9F3E3E40FF3A3',
//              's_ppv' => 'amway%253Aru%253Areg-customer-registration%2C94%2C94%2C1634',
//              'sc.ASP.NET_SESSIONID' => 'efpt4l4clgkhjfmvuvnqzclg'
//          )));
           
            curl_setopt($ch, CURLOPT_COOKIEFILE, $this->dir_path.'/cookie.txt');
            curl_setopt($ch, CURLOPT_COOKIEJAR, $this->dir_path.'/cookie.txt');
            curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36");
           
            $result = curl_exec($ch);
           
            $info = curl_getinfo($ch);
            print_r($info);
            $redir = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
            print_r($redir);
           
           
           
            curl_close($ch);
           
            return $result;
           
        }
  • Вопрос задан
  • 252 просмотра
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
чем заголовки смотришь?

нужно добиться 1 в 1

curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

и тут для начала нули поставь ( ну или фалс типа)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы