Проблема получения контента для парсинга

Тема в разделе "PHP", создана пользователем funman, 6 фев 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. funman

    funman Постоялец

    Регистр.:
    28 дек 2007
    Сообщения:
    146
    Симпатии:
    25
    На сайте похоже стоит какая то защита от парсинга , срочно нужна ваша помощь.

    вот пример
    PHP:
    $fname "http://cse-cargo.ru/";
    $contenticonv('utf-8''windows-1251',file_get_contents($fname));
    echo 
    $content;
    Нужно получить доступ к cse-cargo.ru
    на cUrl не пробовал но думаю просто так не получится.


    выдает ошибку.
    failed to open stream: Redirection limit reached, aborting in
     
  2. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    воспользуйтесь курлом, в нем можно будет отследить редиректы и по необходимости увеличить максимальное количество, по умолчанию стоит 20 или 30 переходов.
    П.С.: смог получить страницу default.aspx с первого раза при веключенной опции CURLOPT_FOLLOWLOCATION
     
  3. funman

    funman Постоялец

    Регистр.:
    28 дек 2007
    Сообщения:
    146
    Симпатии:
    25
    я изначально пробовал, но что то видимо не хватает.

    PHP:
    <?php


    $url
    ="http://www.cse-cargo.ru/Client/Tracking.aspx";  
    $post "__EVENTARGUMENT=&__EVENTTARGET=&__EVENTVALIDATION=%2FwEWBwK6nK7JCwKEx7TjBwKhp8GtDQKdsa3MAwKarJ2lDgKH3J6VCgLf5o3uCnGxEWbwhWiKenxGbA1%2FJMcAuYrt&__VIEWSTATE=%2FwEPDwUKMTIzNDk1MTg4Ng9kFgJmD2QWAgIDD2QWAgIBD2QWBgIFDw8WAh4HVmlzaWJsZWhkZAIJDzwrAA0CAA8WAh4LXyFEYXRhQm91bmRnZAwUKwACBQMwOjAUKwACFhAeBFRleHQFPtCf0L7RgNGC0LDQuyDQtNC%2B0YHRgtGD0L%2FQsCDQuiDRgdC40YHRgtC10LzQtSDCq9Ca0LDRgNCz0L4gM8K7HgVWYWx1ZQU%2B0J%2FQvtGA0YLQsNC7INC00L7RgdGC0YPQv9CwINC6INGB0LjRgdGC0LXQvNC1IMKr0JrQsNGA0LPQviAzwrseC05hdmlnYXRlVXJsBQ4vVHJhY2tpbmcuYXNweB4HVG9vbFRpcAU%2B0J%2FQvtGA0YLQsNC7INC00L7RgdGC0YPQv9CwINC6INGB0LjRgdGC0LXQvNC1IMKr0JrQsNGA0LPQviAzwrseB0VuYWJsZWRnHgpTZWxlY3RhYmxlZx4IRGF0YVBhdGgFDi90cmFja2luZy5hc3B4HglEYXRhQm91bmRnFCsAAgUDMDowFCsAAhYOHwIFIdCa0LvQuNC10L3RgtGB0LrQuNC5INC00L7RgdGC0YPQvx8DBSHQmtC70LjQtdC90YLRgdC60LjQuSDQtNC%2B0YHRgtGD0L8fBQUh0JrQu9C40LXQvdGC0YHQutC40Lkg0LTQvtGB0YLRg9C%2FHwZnHwdoHwgFJDhlMzEwMmJhLTIyNTUtNDQ1Yi04NjdmLTdhMWZkYzdlZmI0NB8JZxQrAAcFFzA6MCwwOjEsMDoyLDA6MywwOjQsMDo1FCsAAhYSHwMFI9Ce0YLRgdC70LXQttC40LLQsNC90LjQtSDQs9GA0YPQt9CwHwlnHghTZWxlY3RlZGcfAgUj0J7RgtGB0LvQtdC20LjQstCw0L3QuNC1INCz0YDRg9C30LAfBAUVL0NsaWVudC9UcmFja2luZy5hc3B4HwZnHwdnHwUFI9Ce0YLRgdC70LXQttC40LLQsNC90LjQtSDQs9GA0YPQt9CwHwgFFS9jbGllbnQvdHJhY2tpbmcuYXNweGQUKwACFhAfAgUn0JrQsNC70YzQutGD0LvRj9GC0L7RgCDQtNC%2B0YHRgtCw0LLQutC4HwMFJ9Ca0LDQu9GM0LrRg9C70Y%2FRgtC%2B0YAg0LTQvtGB0YLQsNCy0LrQuB8EBREvQ2xpZW50L0NhbGMuYXNweB8FBSfQmtCw0LvRjNC60YPQu9GP0YLQvtGAINC00L7RgdGC0LDQstC60LgfBmcfB2cfCAURL2NsaWVudC9jYWxjLmFzcHgfCWdkFCsAAhYQHwIFIdCe0YTQvtGA0LzQu9C10L3QuNC1INC30LDQutCw0LfQsB8DBSHQntGE0L7RgNC80LvQtdC90LjQtSDQt9Cw0LrQsNC30LAfBAUVL0NsaWVudC9OZXdPcmRlci5hc3B4HwUFIdCe0YTQvtGA0LzQu9C10L3QuNC1INC30LDQutCw0LfQsB8GZx8HZx8IBRUvY2xpZW50L25ld29yZGVyLmFzcHgfCWdkFCsAAhYQHwIFIdCd0LXRgdC60L7Qu9GM0LrQviDQt9Cw0LrQsNC30L7Qsh8DBSHQndC10YHQutC%2B0LvRjNC60L4g0LfQsNC60LDQt9C%2B0LIfBAUaL0NsaWVudC9OZXdPcmRlck11bHRpLmFzcHgfBQU40J7RhNC%2B0YDQvNC70LXQvdC40LUg0L3QtdGB0LrQvtC70YzQutC40YUg0LfQsNC60LDQt9C%2B0LIfBmcfB2cfCAUaL2NsaWVudC9uZXdvcmRlcm11bHRpLmFzcHgfCWdkFCsAAhYQHwIFHdCf0YDQvtGB0LzQvtGC0YAg0LfQsNC60LDQt9CwHwMFHdCf0YDQvtGB0LzQvtGC0YAg0LfQsNC60LDQt9CwHwQFFS9DbGllbnQvR2V0T3JkZXIuYXNweB8FBR3Qn9GA0L7RgdC80L7RgtGAINC30LDQutCw0LfQsB8GZx8HZx8IBRUvY2xpZW50L2dldG9yZGVyLmFzcHgfCWdkFCsAAhYQHwIFG9CT0YDRg9C30L7QstGL0LUg0LzQsNGA0LrQuB8DBRvQk9GA0YPQt9C%2B0LLRi9C1INC80LDRgNC60LgfBAUWL0NsaWVudC9DYXJnb01hcmsuYXNweB8FBSjQn9C10YfQsNGC0Ywg0LPRgNGD0LfQvtCy0YvRhSDQvNCw0YDQvtC6HwZnHwdnHwgFFi9jbGllbnQvY2FyZ29tYXJrLmFzcHgfCWdkZAILD2QWAgIBDxBkDxYCZgIBFgIQBQrQl9Cw0LrQsNC3BQVvcmRlcmcQBRLQndCw0LrQu9Cw0LTQvdCw0Y8FB3dheWJpbGxnZGQYAgUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgIFFmN0bDAwJEltYWdlQnV0dG9uTG9naW4FHmN0bDAwJG1haW4kSW1hZ2VCdXR0b25UcmFja2luZwULY3RsMDAkTWVudTEPD2QFhAHQn9C%2B0YDRgtCw0Lsg0LTQvtGB0YLRg9C%2F0LAg0Log0YHQuNGB0YLQtdC80LUgwqvQmtCw0YDQs9C%2BIDPCu1zQmtC70LjQtdC90YLRgdC60LjQuSDQtNC%2B0YHRgtGD0L9c0J7RgtGB0LvQtdC20LjQstCw0L3QuNC1INCz0YDRg9C30LBkq38R%2BkLVpPdrR8ivQOpiGx23dgI%3D&ctl00%24main%24ImageButtonTracking.x=71&ctl00%24main%24ImageButtonTracking.y=16&ctl00%24main%24RadioButtonListDocumentType=waybill&ctl00%24main%24TextBoxNumbers=9347374"
    $ch curl_init(); 
          
    curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue); 
            
    curl_setopt($chCURLOPT_URL$url); 
            
    curl_setopt($chCURLOPT_POSTtrue); 
            
    curl_setopt($chCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1)"); 
            
    curl_setopt($chCURLOPT_POSTFIELDS$post); 
            
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue); 
            
    curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse); 
        
    curl_setopt($chCURLOPT_COOKIESESSION1); 
        
    curl_setopt($chCURLOPT_COOKIEFILErand(1111,99999).'.ck'); 
        
    curl_setopt($chCURLOPT_REFERRER"http://www.cse-cargo.ru/Client/Tracking.aspx"); 
                
    $result curl_exec($ch);       
    curl_close($ch); 

    echo 
    $result;

    в общем эта страница для определения статуса груза по номеру накладной. К примеру для номера накладной "9347374" , ссылка будет:
    Как сграбить этот контент через Php?
    Код:
    ttp://www.cse-cargo.ru/Client/Tracking.aspx?__EVENTARGUMENT=&__EVENTTARGET=&__EVENTVALIDATION=%2FwEWBwK6nK7JCwKEx7TjBwKhp8GtDQKdsa3MAwKarJ2lDgKH3J6VCgLf5o3uCnGxEWbwhWiKenxGbA1%2FJMcAuYrt&__VIEWSTATE=%2FwEPDwUKMTIzNDk1MTg4Ng9kFgJmD2QWAgIDD2QWAgIBD2QWBgIFDw8WAh4HVmlzaWJsZWhkZAIJDzwrAA0CAA8WAh4LXyFEYXRhQm91bmRnZAwUKwACBQMwOjAUKwACFhAeBFRleHQFPtCf0L7RgNGC0LDQuyDQtNC%2B0YHRgtGD0L%2FQsCDQuiDRgdC40YHRgtC10LzQtSDCq9Ca0LDRgNCz0L4gM8K7HgVWYWx1ZQU%2B0J%2FQvtGA0YLQsNC7INC00L7RgdGC0YPQv9CwINC6INGB0LjRgdGC0LXQvNC1IMKr0JrQsNGA0LPQviAzwrseC05hdmlnYXRlVXJsBQ4vVHJhY2tpbmcuYXNweB4HVG9vbFRpcAU%2B0J%2FQvtGA0YLQsNC7INC00L7RgdGC0YPQv9CwINC6INGB0LjRgdGC0LXQvNC1IMKr0JrQsNGA0LPQviAzwrseB0VuYWJsZWRnHgpTZWxlY3RhYmxlZx4IRGF0YVBhdGgFDi90cmFja2luZy5hc3B4HglEYXRhQm91bmRnFCsAAgUDMDowFCsAAhYOHwIFIdCa0LvQuNC10L3RgtGB0LrQuNC5INC00L7RgdGC0YPQvx8DBSHQmtC70LjQtdC90YLRgdC60LjQuSDQtNC%2B0YHRgtGD0L8fBQUh0JrQu9C40LXQvdGC0YHQutC40Lkg0LTQvtGB0YLRg9C%2FHwZnHwdoHwgFJDhlMzEwMmJhLTIyNTUtNDQ1Yi04NjdmLTdhMWZkYzdlZmI0NB8JZxQrAAcFFzA6MCwwOjEsMDoyLDA6MywwOjQsMDo1FCsAAhYSHwMFI9Ce0YLRgdC70LXQttC40LLQsNC90LjQtSDQs9GA0YPQt9CwHwlnHghTZWxlY3RlZGcfAgUj0J7RgtGB0LvQtdC20LjQstCw0L3QuNC1INCz0YDRg9C30LAfBAUVL0NsaWVudC9UcmFja2luZy5hc3B4HwZnHwdnHwUFI9Ce0YLRgdC70LXQttC40LLQsNC90LjQtSDQs9GA0YPQt9CwHwgFFS9jbGllbnQvdHJhY2tpbmcuYXNweGQUKwACFhAfAgUn0JrQsNC70YzQutGD0LvRj9GC0L7RgCDQtNC%2B0YHRgtCw0LLQutC4HwMFJ9Ca0LDQu9GM0LrRg9C70Y%2FRgtC%2B0YAg0LTQvtGB0YLQsNCy0LrQuB8EBREvQ2xpZW50L0NhbGMuYXNweB8FBSfQmtCw0LvRjNC60YPQu9GP0YLQvtGAINC00L7RgdGC0LDQstC60LgfBmcfB2cfCAURL2NsaWVudC9jYWxjLmFzcHgfCWdkFCsAAhYQHwIFIdCe0YTQvtGA0LzQu9C10L3QuNC1INC30LDQutCw0LfQsB8DBSHQntGE0L7RgNC80LvQtdC90LjQtSDQt9Cw0LrQsNC30LAfBAUVL0NsaWVudC9OZXdPcmRlci5hc3B4HwUFIdCe0YTQvtGA0LzQu9C10L3QuNC1INC30LDQutCw0LfQsB8GZx8HZx8IBRUvY2xpZW50L25ld29yZGVyLmFzcHgfCWdkFCsAAhYQHwIFIdCd0LXRgdC60L7Qu9GM0LrQviDQt9Cw0LrQsNC30L7Qsh8DBSHQndC10YHQutC%2B0LvRjNC60L4g0LfQsNC60LDQt9C%2B0LIfBAUaL0NsaWVudC9OZXdPcmRlck11bHRpLmFzcHgfBQU40J7RhNC%2B0YDQvNC70LXQvdC40LUg0L3QtdGB0LrQvtC70YzQutC40YUg0LfQsNC60LDQt9C%2B0LIfBmcfB2cfCAUaL2NsaWVudC9uZXdvcmRlcm11bHRpLmFzcHgfCWdkFCsAAhYQHwIFHdCf0YDQvtGB0LzQvtGC0YAg0LfQsNC60LDQt9CwHwMFHdCf0YDQvtGB0LzQvtGC0YAg0LfQsNC60LDQt9CwHwQFFS9DbGllbnQvR2V0T3JkZXIuYXNweB8FBR3Qn9GA0L7RgdC80L7RgtGAINC30LDQutCw0LfQsB8GZx8HZx8IBRUvY2xpZW50L2dldG9yZGVyLmFzcHgfCWdkFCsAAhYQHwIFG9CT0YDRg9C30L7QstGL0LUg0LzQsNGA0LrQuB8DBRvQk9GA0YPQt9C%2B0LLRi9C1INC80LDRgNC60LgfBAUWL0NsaWVudC9DYXJnb01hcmsuYXNweB8FBSjQn9C10YfQsNGC0Ywg0LPRgNGD0LfQvtCy0YvRhSDQvNCw0YDQvtC6HwZnHwdnHwgFFi9jbGllbnQvY2FyZ29tYXJrLmFzcHgfCWdkZAILD2QWAgIBDxBkDxYCZgIBFgIQBQrQl9Cw0LrQsNC3BQVvcmRlcmcQBRLQndCw0LrQu9Cw0LTQvdCw0Y8FB3dheWJpbGxnZGQYAgUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgIFFmN0bDAwJEltYWdlQnV0dG9uTG9naW4FHmN0bDAwJG1haW4kSW1hZ2VCdXR0b25UcmFja2luZwULY3RsMDAkTWVudTEPD2QFhAHQn9C%2B0YDRgtCw0Lsg0LTQvtGB0YLRg9C%2F0LAg0Log0YHQuNGB0YLQtdC80LUgwqvQmtCw0YDQs9C%2BIDPCu1zQmtC70LjQtdC90YLRgdC60LjQuSDQtNC%2B0YHRgtGD0L9c0J7RgtGB0LvQtdC20LjQstCw0L3QuNC1INCz0YDRg9C30LBkq38R%2BkLVpPdrR8ivQOpiGx23dgI%3D&ctl00%24main%24ImageButtonTracking.x=71&ctl00%24main%24ImageButtonTracking.y=16&ctl00%24main%24RadioButtonListDocumentType=waybill&ctl00%24main%24TextBoxNumbers=9347374
    
    ?>
     
  4. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    сложный случай :), имхо
    пока не смог разобраться почему скрипт циклится при редиректе на Login.aspx,
    браузер же приходит на Login.aspx, получает куки и идет на требуюмую страницу :).
     
  5. betatest

    betatest

    Регистр.:
    3 дек 2007
    Сообщения:
    517
    Симпатии:
    127
    вот 2 трабла в этом скрипте:

    когда идет обращение к странице http://www.cse-cargo.ru/Login.aspx?ReturnUrl=%2fClient%2fTracking.aspx
    (а именно к ней должно идти первое обращение) - там в заголовке ставится 2 заголовка куки

    Set-Cookie: ASP.NET_SessionId=hpfjij45jrl5v0aifxg5nybs; path=/; HttpOnly
    Set-Cookie: .ASPXAUTH=FF5E27D61F33B04B351E3EC8AF76CC67AAE8935654D57C344E7B4B408702D3743F1E9EA75F894C7B786242888F5B847B350088ACDF9A40EA6C34C3248CA941ADA9A9D5EA3DCB5546E631541AE6A3F1CC; path=/; HttpOnly

    проблема1: ваш скрипт видит только первый заголовок

    далее идет редирект с передаваемыми куками на страницу
    http://www.cse-cargo.ru/Client/Tracking.aspx

    и, в зависимости от принятых параметров, мы получаем форму, в которой данные параметры учитываются

    т.е. вам нужно решить проблему с куками и распарсить форму, для передачи полей с нужными параметрами - это не оч сложно :)

    далее передаем все нужные куки и параметры формы пост запросом и получаем нужный результат
     
  6. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    betatest, у вас получилось дойти до требуемой страницы при помощи скрипта, если да, хотелось бы узнать настройки для курла?
     
  7. betatest

    betatest

    Регистр.:
    3 дек 2007
    Сообщения:
    517
    Симпатии:
    127
    да, получилось
    (кстати лууп возникает когда старые куки пристуствуют - их надо прибить, либо они отсутствуют)

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

    PHP:
    $url="http://www.cse-cargo.ru/Login.aspx?ReturnUrl=%2fClient%2fTracking.aspx";  

    $ch curl_init($url); 
        
    curl_setopt($chCURLOPT_URL$url); 
        
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
        
    curl_setopt($chCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1)"); 
        
    curl_setopt($chCURLOPT_COOKIEFILE$cookie_file);
        
    curl_setopt($chCURLOPT_COOKIEJAR,  $cookie_file);
        
    curl_setopt($chCURLOPT_FOLLOWLOCATION0); 
        
    curl_setopt($chCURLOPT_REFERRER"http://www.cse-cargo.ru/Client/Tracking.aspx");
        
    curl_setopt($chCURLOPT_HEADER1);
    $result curl_close($ch); 
    каждую следующу страницу грузим отедльно и обрабатываем тоже

    куки обрабатываем в памяти, сохранение там только для просмотра сделал :)

    остальные по аналогии, только куки свои подставляем

    ПС вроде поправил, как было, только заголовки я массивом еще передаю, не думаю, что это играет роль
     
Статус темы:
Закрыта.