![]() |
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]() ![]() ![]() |
|
Simpliest |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 625 Регистрация: 1.9.2009 Репутация: нет Всего: 3 |
Ну, кнопку сделали картинкой. Это не должно влиять.
Так не бывает. Если конечно там рабочая форма. При нажатии submit в браузере в Fiddler появляется строка запроса. Если кликнуть по ней, то справа на вкладке Inspectors можно выбрать Raw там все должно быть. Если этого нет (или при клике по submit не появляется новой строки запроса в Fiddler), то смотрите исходный код страницы с формой. Возможно форма не рабочая (хотя это маловероятно) |
|||
|
||||
liliputochka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 16.3.2006 Где: Волгоград Репутация: нет Всего: нет |
При нажатии на кнопку submit появляется строка:
# Result Protocol Host URL Body Caching Content-Type Process Comments Custom 21 200 HTTP CONNECT cwrelectronics.com:443 0 iexplore:5340 На вкладке Inspectors, в разделе Raw: CONNECT cwrelectronics.com:443 HTTP/1.0 User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.3; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0) Host: cwrelectronics.com:443 Content-Length: 0 Proxy-Connection: Keep-Alive Pragma: no-cache The data sent represents an SSLv2-compatible ClientHello handshake. For your convenience, the data is extracted below. Major Version: 3 Minor Version: 0 Random: 1F E7 0F 2B 36 0E 18 96 FE 63 80 80 00 82 2E 64 SessionID: empty Ciphers: [0005] SSL_RSA_WITH_RC4_128_SHA [000A] SSL_RSA_WITH_3DES_EDE_SHA [0013] SSL_DHE_DSS_WITH_3DES_EDE_SHA [0004] SSL_RSA_WITH_RC4_128_MD5 [10080] SSL2_RC4_128_WITH_MD5 [700C0] SSL2_DES_192_EDE3_WITH_MD5 Если не трудно, объясните что озночают эти записи. Мне бы хотелось узнать как инициировать нажатие кнопки и проверить корректность данных для аунтификации. |
|||
|
||||
Simpliest |
|
||||||||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 625 Регистрация: 1.9.2009 Репутация: нет Всего: 3 |
Мммм.
Это точно по тем 3 урл, что в начале топика? Откуда взялся SSL?
То же что и выше
Из какой программы(как себя программа называет) инициирован запрос.
Тоже что и выше
Длина тела запроса
соединение не разрывать
запрос не кешировать Версии Понятия не имею Собственно сессия Поддерживаемые алгоритмы шифрования Банально нажать на нее в браузере. CURL через SSL да с сертификатами работает несколько иначе. Нужно читать мануалы. |
||||||||||||||
|
|||||||||||||||
liliputochka |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 16.3.2006 Где: Волгоград Репутация: нет Всего: нет |
Благодарю за разъяснения. Они очень информативны.
Дело все в том, что моя задача с помощью curl автоматизировать следующие действия: 1. Зайти на https://cwrelectronics.com/login.php и ввести аккаунт, логин, пароль, нажать кнопку Login* 2. Зайти на http://cwrelectronics.com/b2b/productdownload.php и заполнить поля формы, нажать кнопочку Submit* 3. Получить txt-файл с данными и сохранить этот файл на локальной машине. *) Обе кнопочки реализованы как картинки. Сейчас у меня результат следующий: 1. Захожу на страницу авторизации передаю данные, авторизуюсь на сайте, сохраняю кукки 2. Захожу на страницу скачивания товаров (там где форма с данными), заполняю форму данными После этого данные не передаются на сервер и файл не передается. Данный результат я получаю крайне редко, хотя в коде ничего не меняю, но я то прохожу авторизацию и заполняю поля формы, то прохожу авторизацию, но поля формы не заполняются, то не прохожу авторизацию ![]()
Могу вам на email переслать полный текст моего кода, чтобы вы могли посмотреть. |
||||
|
|||||
Simpliest |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 625 Регистрация: 1.9.2009 Репутация: нет Всего: 3 |
Т.е. даже когда это делается руками, а не скриптом? Могу предложить следующее. Каждый чих записывать в файл. Т.е. послали запрос - записали его вместе с HTTP заголовками в файл. Получили ответ - дописали его вместе с HTTP заголовками в файл. И заставить скрипт выполниться несколько раз. Каждый раз отмечая - получилось или нет. Таким образом вы получите дамп информации на все свои успешные и неуспешные попытки. А дальше просто копируем эти дампы в отдельные файлы и сверяем fc success.txt fail.txt >result.txt разница будет в result.txt Собственно ее(разницу) и надо анализировать. Можно еще сделать все руками и аналогичные дампы взять из Fiddler и сравнить все три между собой. Если разница будет, например, только во времени отправки, то проблема не на вашей стороне, а на их.
нет, спасибо не надо. У меня своего хватает ![]() |
||||
|
|||||
liliputochka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 16.3.2006 Где: Волгоград Репутация: нет Всего: нет |
Когда эти операции проделываются руками, все работает. Через скрипт - ни разу. У меня просьба, может крайне тупая: объясните что такое HTTP заголовки? Я примерно предполагаю, что это адрес страницы и данные которые я передала с этой страницы, но возможно я ошибаюсь или мое представление не полно. |
|||
|
||||
Simpliest |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 625 Регистрация: 1.9.2009 Репутация: нет Всего: 3 |
Тогда надо сделать как я сказал выше - записать в лог работу и скрипта и браузера, а потом сравнивать Вот тут все достаточно подробно рассказано. http://ru.wikipedia.org/wiki/HTTP http://ru.wikipedia.org/wiki/HTTP#.D0.97.D....B2.D0.BA.D0.B8 |
|||
|
||||
liliputochka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 16.3.2006 Где: Волгоград Репутация: нет Всего: нет |
Вопрос: когда я прохожу авторизацию у меня идет перенаправление со страницы http://cwrelectronics.com/login.php на страницу http://cwrelectronics.com/b2b/index.php Это может влиять как-то на авторизацию?
Еще когда я загружаю страницу авторизации, то заголовок "GET /login.php HTTP/1.1", а когда ввожу данные и нажимаю кнопочку submit - заголовок "POST /login.php HTTP/1.1". Это происходит, как я думаю, из-за того, что этот файл и обрабатывает введенные данные. Возможно ли что из-за этого я не могу пройти авторизацию? Поясню: с скрипте идет проверка: если(метод == POST) то передать данные в форму. Может в этом дело? И еще одно: файл http://cwrelectronics.com/b2b/productdownload.php, в котором большая форма передает заголовок "GET /b2b/productdownload.php HTTP/1.1". Заполняя эту форму данными и нажимая кнопку submit данные обрабатываются в файле /b2b/handleproductdownload.php с заголовком "POST /b2b/handleproductdownload.php HTTP/1.1". И в ответе на данный запрос приходит "Content-Disposition: attachment; filename="productdownload.txt"". Возможно ли сразу передавать данные формы во второй файл и как мне принимать файл, который attachment? Буду экспериментировать еще, но пока что значительной разницы в заголовках, полученных работой непосредственно с сайтом http://cwrelectronics.com (прохождением необходимых этапов), и запуском моего скрипта нет. Какие-то идеи есть? |
|||
|
||||
Simpliest |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 625 Регистрация: 1.9.2009 Репутация: нет Всего: 3 |
В первом случае вы запросили страницу формы. Во втором случае вы отправили данные формы.
Еще раз. В скрипте может стоять проверка если метод POST то мы "получили" данные формы. Уясните наконец для себя - никакой формы на сервере нет! Там есть лишь данные запроса - его метод, строка URI и т.д. и скрипт который находится по этому адресу. Форма и есть только у вас в браузере и все. Вопрос абсолютно не понятен. Данные надо передавать туда, где их ждут. В данном случае по строкам "POST чего-то там" в Fiddler вы видите кто должен это обработать. В curl соответственно вы должны туда же и отправлять при помощи метода POST. http://php.net/curl http://ua2.php.net/manual/en/function.curl-exec.php - в третьем комментарии есть пример получения файла.
|
||||
|
|||||
liliputochka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 16.3.2006 Где: Волгоград Репутация: нет Всего: нет |
Ура! Ура! Ура!
Simpliest вы мне вернули радость жизни! Я реализовала в одном скрипте авторизацию, в другом - скачивание файла. Если запускать поочередно 1.php, затем 2.php, то авторизация проходит успешно и файл скачивается! Но я пыталась реализовать последовательный вызов этих файлов в третьем, в виде:
Файл 1.php - с авторизацией - выполняется без ошибок и предупреждений. Файл 2.php - со скачиванием файла - не выполняется и ошибок не выдает и программа Fiddler2 тоже возвращает код заголовка 200 OK. Я пыталась соединить код 2-х файлов в один, но результат аналогичен выше указанному. Как такое может быть? Ведь если я делаю include, то файл должен подгружаться и выполняться код в файле! |
|||
|
||||
Simpliest |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 625 Регистрация: 1.9.2009 Репутация: нет Всего: 3 |
Должен. И наверняка выполняется. Разберите в чем отличие от
Я говорил вести логи ответов? Вот и посмотрите эти логи в 1м и втором случае. Скорее всего у вас не передается SID после авторизации. Может кука не запоминается или еще что-то. А может стоит забытый банальный die() в 1м скрипте и до 2го дело просто не доходит. Код есть только у вас. Поэтому http://phpfaq.ru/debug можете делать только вы. Без конкретных сообщений об ошибках никто помочь вам не сможет. |
||||
|
|||||
liliputochka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 16.3.2006 Где: Волгоград Репутация: нет Всего: нет |
Уважаемый Simpliest, вот что я выявила:
скрипт 1.php выполняет все curl_setopt(), вроде выполняет curl_exec(), т.к. создает файл cookiefile.txt и на этом свою работу заканчивает. Раньше он ругался на то, что не находил файл favicon.ico. Но я его скачала. В браузер никакой информации по ошибкам не выводится. Заголовки ошибки не выдают, наоборот пишут "HTTP/1.1 200 OK". Последнее что записано в /usr/local/apache/log/error.log:
Может знаете что можно сделать? |
|||
|
||||
Simpliest |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 625 Регистрация: 1.9.2009 Репутация: нет Всего: 3 |
Уф.
Вроде или таки выполняет? Если выполняет, то какие результаты ожидаются? Получены ли они? Что содержиться в файле cookiefile.txt? То что ожидалось? Это чей лог? Того сайта к которому вы пытаетесь подключиться? Или ваш? Если ваш - то зачем он? Логи я рекомендовал вести для своих данных и ответов. т.е. что-то вида
функцию logtofile естественно надо писать самостоятельно. |
|||
|
||||
liliputochka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 16.3.2006 Где: Волгоград Репутация: нет Всего: нет |
Вопрос решился таким образом: Если процесс авторизации на сайте прошел успешно, сайт перенаправляет на другую страницу. В этот момент мой скрипт с curl обрывает работу. В следствие чего пришлось разделить работу curl на 2 скрипта, один - проходит авторизацию и 2 - скачивает файл информации. Эти файлы надо запускать последовательно, сначала один потом второй. Это положение дел крайне неприятно, но другого решения я не знаю и придумать не могу. Большое спасибо за помощь Simpliest |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 1 Всего: 42 |
Что значит прерывает? Вы его завершаете? Или он выдает ошибку? Для перенаправления используйте http://ua.php.net/manual/en/function.curl-setopt.php CURLOPT_FOLLOWLOCATION -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Сеть | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |