Jump to content
  • 0

PHP cURL Cookie проблема с авторизацией под двумя учетными записями, на одном сервере в пределах одного домена (на етот вопрос мне не могут отвтетить)


egoss
 Share

Question

Необходимо авторизироваться на сайте под двумя учетными записями сразу по очереди. вроде ничего сложного.

Инициализирую сеанс cURL в пхп, устанавливаю опции, отпрвавляю данные записываю куки в файл, прохожу location'ы, получаю содержимое. закрываю сеанс. все нормально. после ставлю таймаут sleep(30); к примеру и делаю тоже самое но отправляю другие данные для авторизации и она не прокатывает, в ответе получаю ошибку о неверном логине или пароле.

Логин и пароль верные.

Файлы для кукисов разные. записываются правильно.

Авторизируется на сервере только первая отправленая учетная запись, вторая нет. пробовал менять порядок.

user-agent разный для аккаунтов.

Привязки к IP нету.

Руками авторизиироваться на двух аккаунтах одновременно получается.

Пример:

<?php 
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, $step1);
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch1, CURLOPT_COOKIEJAR, $cookie_file1);
curl_setopt($ch1, CURLOPT_COOKIEFILE, $cookie_file1);
curl_setopt($ch1, CURLOPT_USERAGENT, $user_agent1);
curl_setopt($ch1, CURLOPT_POSTFIELDS, $auth_string1);
curl_setopt($ch1, CURLOPT_POST, 1);
curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch1);
curl_close($ch1);

sleep(30);

// тоже самое для авторизации под другой учетной записью.
$ch2 = curl_init();
...
?>

Если код разбить на два файла, то все работает правильно. т.е. первый авторизирует один аккаунт, второй соотвественно другой аккаунт.

Всю ночь искал информацию. нашел пример использования недокументированных (на сколько мне известно) функций cURL для синхронного выполнения запросов.

ссылка

Сделал по аналогии, всеравно авторизацию успешно проходит только один аккаунт.

Заметил, что при использовании последнего способа, cookie не записались в файл, и при етом один аккаунт, пройдя через два location'a, выдал мне страницу успешной авторизации.

Предпологаю:

Что cookie всетаки были отправлены.

И еще предположение, что ошибка о неверноем логине или пароле, при попытке авторизироваться на втором по счету аккаунте, происходит опять же изза cookie, т.е. сервер получает cookie от одной учетной записи, а я посылаю реквизиты для другой.

Предпологаю:

Судя по информации с википедии Сокет

и успешной работе скрипта, при условии 1 авторизация - 1 процесс

Дело может быть в сокете который создает cURL, curl_close не решает ету проблему. есть другие способы не прерывая выполнение скрипта отчистить сокет? если ето так.

Задача скрипта такая, нужно пройтись по некоторым страницам сайта под разными учетными записями, собрать нужную информацию и выйти. И два условия

1. прохожить по сайту нужно оченьл часто

2. необходим таймаут в районе 30 секунд

Чтобы не запускать несколько процессов, хотелось бы реализовать все в одном, пока первая учетная запись на таймауте (таймаут высчитывается из количества аккаунтов и времени выполнения 1 прохода по сайту), выполняется проход с другой учетной записи, все в цикле.

Етот вариант экономит ресурсы и время.

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

Скажите пожалуйста, в чем может быть проблема. Спасибо.

PS

Авторизация на одном сервере в пределах одного домена.

Код в самом верху без цикла, для наглядности, его тоже проверял.

Думал о решении на сокетах, на практике получается очень не удобно, так что желательно всеже cURL.

PSS

Дайте пожалуйста хоть какойнибудь более менее полезный ответ. или может я задал настолько тупой вопрос, что он не заслуживает внимания?

У меня начинает создаваться впечатление, что на других форумах меня просто игнорируют. надеюсь здесь такого не будет. Еще раз спасибо.

Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy