За последние 24 часа нас посетили 22730 программистов и 1561 робот. Сейчас ищут 922 программиста ...

Парсинг, cURL, https. Что я делаю не так?

Тема в разделе "Прочие вопросы по PHP", создана пользователем Riddick, 1 июн 2010.

  1. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    Привет всем. Пожалуйста подскажите что я делаю не так?:( До 6 утра сидел прошлой ночью, не могу залогинится на сайте и всё. Скажите пожалуйста может сам сервер делает какие ограничения? Или ограничения в моей голове. Кучу сайтов перерыл перед тем как тут писать. Всем спасибо за внимание и поддержку.

    PHP:
    1. <?php
    2. function open_https_url($url,$refer = "",$usecookie = false) {
    3.  
    4.     if($usecookie) {
    5.  
    6.         if (file_exists($usecookie)) {
    7.  
    8.             if (!is_writable($usecookie)) {
    9.  
    10.                 return "Can't write to $usecookie cookie file, change file permission to 777 or remove read only for windows.";
    11.             }
    12.         } else {
    13.             $usecookie = "cookie.txt";
    14.             if (!is_writable($usecookie)) {
    15.  
    16.                 return "Can't write to $usecookie cookie file, change file permission to 777 or remove read only for windows.";
    17.             }
    18.         }
    19.  
    20.     }
    21.  
    22.     $ch = curl_init();
    23.  
    24.  
    25.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    26.  
    27.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    28.  
    29.     curl_setopt($ch, CURLOPT_HEADER, 1);
    30.  
    31.     curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3');
    32.  
    33.     if ($refer != "") {
    34.  
    35.         curl_setopt($ch, CURLOPT_REFERER, $refer );
    36.  
    37.     }
    38.  
    39.     curl_setopt($ch, CURLOPT_URL, $url);
    40.  
    41.     // Все POST-параметры, которые надо отправить для авторизации
    42.     $post = 'j_username=my_username&j_password=my_password';
    43.  
    44.     curl_setopt($ch, CURLOPT_POST, 1); // Указываем, что нам нужно отправить POST-запрос
    45.     curl_setopt($ch, CURLOPT_POSTFIELDS,$post); // Передаем POST-параметры
    46.  
    47.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Результат нам нужно вернуть в переменную, а не на экран
    48.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // Переходить по редиректам
    49.  
    50.     // если с сервера пришло cookie, то запишем его в файл $cookie_file
    51.     if ($usecookie) {
    52.         curl_setopt($ch, CURLOPT_COOKIEJAR, $usecookie);
    53.  
    54.         curl_setopt($ch, CURLOPT_COOKIEFILE, $usecookie);
    55.     }
    56.  
    57.  
    58.     curl_exec ($ch);
    59.  
    60.     $result = curl_multi_getcontent($ch);
    61.  
    62. //echo "<pre>";
    63. //print_r(curl_getinfo($ch));
    64. //echo "</pre>";
    65. //echo "\n\ncURL error number:" .curl_errno($ch)."<br /><br />";
    66. //echo "\n\ncURL error:" . curl_error($ch)."<br /><br />";
    67.  
    68.     curl_close ($ch);
    69.  
    70.    return $result;
    71. }
    72. echo open_https_url("https://my.motoso.de/MyMotoso/my/index.htm","",true);
    73.  
    74. ?>
    Собственно проблема в том что я не могу залогиниться на сайте через скрипт.

    Информацию забираю свою. Необходимо забрать информацию о 3000 товарах и перенести на другую базу. По сути дела доступ я имею, просто хотелось бы автоматизировать.
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    что-то подсказывает, что при логине на свой сайт человек знает на какую страницу слать данные.
    А ещё владелец сайта решил бы всё просто удалённым подключением к БД.
    Хотя, бывают такие владельцы…
     
  3. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    так я ж не против, даже тему не прикрыл
     
  5. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    Извините немного не правильно сказал. Да сервис не мой, аккаунт МОЙ.
    Если бы сервис был мой, я бы таких топих не создавал, что это получается тогда, экстремальный вывод информации чтоли? Зачем так мучится когда можно было бы все вытащить из phpMyAdmin? Нет уж))
     
  6. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    Спасибо)))) Помогло) Скажи пожалуйста, а почему через ту страницу откуда я заходил не получалось залогинится???
     
  7. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    мм, я посмотрел html код страницы, посмотрел атрибут action у формы и узнал что скрипт m_security_check обрабатывает логин и пароль... с чего вы взяли что index?
     
  8. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    ну он же должен был заполнить формы и передать их m_security_check, разве не так? Там же вроде как:
    PHP:
    1.  
    2. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // Переходить по редиректам
    3.  
    должен выполнять редиректы?
     
  9. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    да, только я что то редиректов там не заметил... где там редирикет?
    зашел, на странице - форма...
    редирект-это пере направление на другую страницу
     
  10. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    понятно, я то думал, когда мы устанавливаем параметр который указывает, что нам нужно отправить POST-запрос. Запрос сам отправляется.
     
  11. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Riddick
    пост действительно отправляется, но на index, который его не обрабатывает
     
  12. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    Спасибо. Немного почувствовал принцип работы. Раз уж я завел данный топик появился теперь следующий вопрос:

    Как можно посредством CURL вызвать функцию JavaScript на странице которую я парсю? Пейджера асинхронно взаимодействую с сервером, и отдают только нужную часть из списка.

    Вот кусок кода который говорит какие страницы выводить:

    Код (Text):
    1. <a href="#" onclick="submitGridPager(3); return false;">3</a>
    В данном случае интервал от 30 до 40.

    Код (Text):
    1. function submitGridPager(page) {
    2.   var form = document.getElementById('form_classifiedsGrid');
    3.  
    4.   form.gridAction.value = 'gotoPage';
    5.   form.page.value = page;
    6.  
    7.   submitGridForm(form, 'classifiedsGrid');
    8. }
     
  13. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    javascript отдает скрипту php все теже пост, гет, потому получает ответ и вставляет в страницу, раскопайте какому скрипту он их отдает и по аналогии с формой авторизации
     
  14. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    Спасибо, так и подумал на самом деле. Сам с AJAX работал, с базой данных страна-регион-город, ну где нужно выбрать свой город без редиректов. Смотрел как раз свои коды AJAX.
     
  15. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Riddick
    можно посмотреть ваш js код, без php? в страна-город-регион?
     
  16. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    пожалуйста, писал сам, первый мой опыт с AJAX(в том проекте не только регионы были, еще куча разный полей) и на данный момент последний))) Оказывается тут я страны тогда удалил(нужна была только Россия потому что), и использовал только: регион-город. Вот:

    HTML:
    1. <select style="width: 150px;" size="1" name="region_id" id="region_id" OnChange="getCustomerInfo();">
    [js]
    <script language="javascript" type="text/javascript">
    var request = false;
    try {
    request = new XMLHttpRequest();
    } catch (trymicrosoft) {
    try {
    request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (othermicrosoft) {
    try {
    request = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (failed) {
    request = false;
    }
    }
    }

    if (!request)
    alert("Error initializing XMLHttpRequest!");

    function getCustomerInfo() {
    var region_id = document.getElementById("region_id").value;
    var url = "ajax_functions.php?region_id_yes=" + escape(region_id);
    request.open("POST", url, true);
    request.onreadystatechange = updatePage;
    request.send(null);

    function updatePage() {
    if (request.readyState == 4) {
    if (request.status == 200) {
    <!--alert("Server is done!");-->
    var response = request.responseText.split("|");
    document.getElementById("city").innerHTML = response[0];
    } else
    alert("status is " + request.status);
    }
    }
    }
    </script>
    [/js]
     
  17. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    в фф работает ?
     
  18. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    Даже сейчас не могу всё посмотреть. Год назад было, но тогда точно работало. Ибо заказчик тестировал ой как всё. С этим AJAX я еще повоевал тогда... Чтобы браузеры все работали.


    Вот нашел функцию в JS файлах, вроде если не ошибаюсь как раз отсюда можно понять куда посылать запросы?
    [js]
    function motosoTracker(accountHash, type) {
    var trackingUrl = "/api/tracker/track.api?h=" + accountHash + "&t=" + type;
    var aa = new AjaxAnywhere();
    aa.id = "motosoTracker";
    aa.showLoadingMessage = function() {};
    aa.hideLoadingMessage = function () {};
    aa.callback = function () {};
    aa.getAJAX(trackingUrl);
    }

    function abTracker(variate) {
    var trackingUrl = "/api/tracker/ab.api?v=" + variate;
    var aa = new AjaxAnywhere();
    aa.id = "abTracker";
    aa.showLoadingMessage = function() {};
    aa.hideLoadingMessage = function () {};
    aa.callback = function () {};
    aa.getAJAX(trackingUrl);
    }
    [/js]
     
  19. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Riddick
    ох, заказывали? я не фрилансю просто, сколько такая штука стоит?
     
  20. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    Я очень мало получил. Сейчас взял бы намного больше. Там не только в AJAX дело было просто, AJAX это верхушка айсберга для меня тогда была. Офигевал я от кодинга вобщем. Зато после этого начал нормально оценивать работу и прибрел очень большой опыт...
     
  21. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Riddick
    незнай, пробуйте)
    д давно программируете на php?
     
  22. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    Padaboo вобщем я нашел файл. Он ссылается на себя. Там prototype используют. Сейчас вкуриваю, ужос настоящий...
     
  23. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    не успел отредактировать) так, давно на php программируете? это у вас хобби?
     
  24. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    В 10 классе написал первый php-скрипт. Сейчас 2 курс заканчиваю. Итого больше 3 лет. Но я не все время активно развивался, да вообще за 3 года можно очень многое узнать о php, многое написать еще можно) Это поначалу было хобби, сейчас небольшой способ заработка. Через года 2 надеюсь php-программирование будет основной работой)))

    Хотя только на php останавливаться не очень хочется. Но язык мне очень нравится. Сейчас изучаю ООП, хочется не просто ООП ради ООП, а ООП там где это нужно. Шаблоны читаю, пока по книге Профессиональное программирование на PHP(Джордж Шлосснейгл), потом хочу на Design Patterns(GoF) перейти и т.д. Как видите я не знаю очень многово((

    PS: оффтоп помоему жесткий пошел)) Начальство ругаться не будет?))
     
  25. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Хорошая книга, давно прочитал уже. Причём практически ничего нового для себя не открыл.