ФорумПрограммированиеPHP для идиотов → парсинг https с авторизацией

парсинг https с авторизацией

  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz Апрель 18, 2012, 4:13 п.п.

    добрый день.

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

    параметры (логин и пасс) будут передавться через CURLOPT_POSTFIELDS

    вопрос: а как узнать строку, по которой передаются данные?

    посмотрев html код я увидел что пасс хранится в ctl00$ctl00$cph1$cph1$ctrlCustomerLogin$LoginForm$Password
    а логин в &ctl00$ctl00$cph1$cph1$ctrlCustomerLogin$LoginForm$UserName


    в итоге после подстановки этих значений и вывода страницы на экран я вижу белый экран.

    вопрос глупый, но хочу спросить: можно ли парсить https страницы?
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz Апрель 18, 2012, 4:41 п.п., спустя 28 минут 24 секунды

    можно.
    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Апрель 18, 2012, 6:14 п.п., спустя 1 час 32 минуты 55 секунд

    нужно
    Сапожник без сапог
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz Апрель 19, 2012, 12:42 д.п., спустя 6 часов 28 минут 10 секунд

    важно
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz Апрель 19, 2012, 1:36 д.п., спустя 53 минуты 34 секунды

    необходимо
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz Апрель 19, 2012, 2:18 п.п., спустя 12 часов 41 минуту 35 секунд

    бля, опять заебываете.

    ну серьезно

    если ставить http://mail.ru/ - то все нормально. я вижу страницу
    если HTTPS - то читсый лист.
    почему так ?

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://www.google.md/");
    curl_exec($ch);
    curl_close($ch);

  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz Апрель 19, 2012, 3:12 п.п., спустя 54 минуты 41 секунду

    как обычно. все заделываются php прогерами. типо умные.
    а сами нихуя не подказывают.

    может поможет али нет, но проблема была в SSL

    curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);

    и все работает.
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz Апрель 19, 2012, 3:47 п.п., спустя 35 минут 7 секунд

    блин, опять ХЗ

    вот вывожу документ
    $result = curl_exec($ch);
    curl_close($ch);
    echo $result;


    но не вся инфа подгружается.
    та что нах-ся в табах не подгружается.

    если вырубаю JS в браузере, то на реальном сайте пусто.
    получается что подгрузка как-то идет через js ?

    а как можно как-то установить метатег base с указанием основного url ?
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz Апрель 19, 2012, 7:01 п.п., спустя 3 часа 13 минут 31 секунду

    Если и правда страница собирается JS, то тебе придется выяснить какие именно запросы идут динамически и имитировать их. Поставь снифер.
    а как можно как-то установить метатег base с указанием основного url ?

    этот вопрос как-то связан с предыдущим текстом? ))) base нужен только браузеру. если ты не браузер, то и ставить никуда не надо.
    ιιlllιlllι унц-унц
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz Апрель 19, 2012, 7:17 п.п., спустя 16 минут 19 секунд

    я думал что не хватает домена и по этому js не работал.
    вот и хотел добавить base.
    хоть я и добавил его, но проблема не решилась.
    изображения и css подгрузились. а вот инфа та нет.


    я нашел какой идет запрос
    https://www.site.com/EtilizeDataService.svc//ProductAccessories?$format=json&$filter=productid eq 66539 and localeid eq 1& $orderby=categoryid

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

    сохряняя его я получаю ту инфу. она в json формате.


    и теперь.

    как мне получить эту инфу?
    как мне симитировать этот запрос?
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz Апрель 19, 2012, 7:24 п.п., спустя 6 минут 58 секунд

    вот этот json и есть правильная инфа. ее использует js чтобы из этих данных слепить страницу. как — смотри исходники.

    твоя конечная цель какая?
    Спустя 90 сек.
    передо мной стоит задача распарсить сайт

    я под "распарсить" понимаю "вытянуть данные чтобы использовать где-то еще". так вот в json твои данные, не надо их в html превращать, это лишний тупой этап
    ιιlllιlllι унц-унц
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz Апрель 20, 2012, 4:02 п.п., спустя 20 часов 37 минут 46 секунд

    вот этот json и есть правильная инфа.


    спасибо.
    но… давай по порядку.

    1. сперва я авторизируюсь.
    2. далее захожу на определенную страницу, как авторизированный и в переменную $result я получаю код запрашиваемой страницы ( $result = curl_exec($ch); )
    3. теперь мне нужно вытащить ту часть инфы, которая передается динамически.

    я посмотрел код, который принимает $result
    там я нахожу jquery код
    $.ajax({ type: "GET"
    , cache: false
    , contentTypeString: "application/json"
    , url: 'https://www.site.com/etilizeServices/EtilDataService.svc//ProductAccessories?$format=json&$filter=productid eq 10180 and localeid eq 1& $orderby=categoryid'
    , success: cbRenderOptionsAccessories
    , dataType: "json"
    , error: cbFailedOptionsAccessories
    });


    вопрос: как мне получить данные из
    https://www.site.com/etilizeServices/EtilDataService.svc//ProductAccessories?$format=json&$filter=productid eq 10180 and localeid eq 1& $orderby=categoryid



Пожалуйста, авторизуйтесь, чтобы написать комментарий!