Как же спарсить.

Discussion in 'PHP' started by zadvig4, 12 Feb 2013.

  1. zadvig4

    zadvig4 Banned

    Joined:
    7 Feb 2013
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Здарова пацаны. Пытаюсь парсить прокси с одного сервиса.
    Сначало палило меня как бота, пока не начал все хидеры передавать. Далее надпись пропала, но не понятно в чем дело, перехожу по адресу сайта скриптом где соксы, скриптом сохраняю исходник страницы в файл, смотрю там HTTP/1.1 200 OK много текста,ну и кодировка непонятная какая-то, но явно не исходник той страницы которая мне надобная

    http://incl[антигугл]oak.com/proxy-list/

    В темпердате поглядел, один запрос по этому урлу и все, соксы выдаёт нормально, но через скрипт не получается.
    Какая там еще проверка не пойму.
    Чем кто может)
     
    #1 zadvig4, 12 Feb 2013
    Last edited: 12 Feb 2013
  2. ourcode

    ourcode New Member

    Joined:
    2 Feb 2013
    Messages:
    21
    Likes Received:
    4
    Reputations:
    5
    Через curl получаете страницу, заголовки подставляете по аналогии с браузером.

    Или через view source в браузере, т.к. страница только одна в бесплатном режиме, а в платном есть готовый экспорт.

    ip можно так через обычный bash

    Code:
    cat proxy.txt | sed 's/</\n</g' | grep "<td>" | sed 's/<td>//g' | grep '\.'
    Результат

    Code:
    190.40.53.52
    190.40.142.17
    201.211.139.116
    2.135.237.221
    178.18.17.211
    81.200.28.34
    178.18.17.211
    192.161.49.25
    192.210.148.12
    192.210.148.12
    173.255.142.206
    198.23.128.126
    178.150.156.219
    180.183.206.70
    180.254.212.73
    199.91.174.6
    192.119.145.17
    173.213.96.229
    199.101.98.165
    199.101.98.165
    192.95.14.4
    192.95.14.4
    74.221.215.254
    198.27.79.144
    198.154.114.118
    198.154.114.118
    198.23.128.136
    198.23.128.136
    198.154.114.100
    74.221.211.117
    46.250.108.84
    190.198.17.156
    118.36.202.226
    189.105.70.157
    177.34.127.218
    200.106.117.61
    5.9.152.12
    176.37.88.107
    5.39.119.105
    5.39.119.105
    91.228.53.28
    77.122.164.30
    212.154.188.26
    61.160.253.136
    77.95.200.227
    124.248.211.117
    176.9.144.177
    178.215.74.5
    46.246.120.226
    122.180.94.59
    200.52.87.170
    110.77.149.199
    213.145.49.14
    173.45.125.236
    202.69.40.174
    67.51.138.122
    217.19.7.39
    193.255.143.62
    110.93.215.106
    109.185.118.156
    72.64.146.136
    193.232.174.65
    177.43.72.250
    202.43.188.8
    
    Порт отображается картинкой, большинство на дефолтных 3128, 1080, 8080
     
  3. zadvig4

    zadvig4 Banned

    Joined:
    7 Feb 2013
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    ourcode у меня скрипт не на пхп..
    http://pastebin.com/7cWCRPjC
    intertrey мне и одной страницы паблика хватит
     
  4. ourcode

    ourcode New Member

    Joined:
    2 Feb 2013
    Messages:
    21
    Likes Received:
    4
    Reputations:
    5
    Ты в заголовке указал, gzip / defltate, т.е. что поддерживаешь сжатие, в ответ вернулись пожатые данные

    Еще с регулярным выражением что-то не так.

    Вот пример рабочего скрипта на perl.
    Code:
    #!/usr/bin/perl
    
    use LWP::UserAgent;
    use HTTP::Cookies;
    
    my $ua = LWP::UserAgent->new(agent => 'Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/17.0 Firefox/17.0');
    my $cookie_jar = HTTP::Cookies->new;
    $ua->cookie_jar($cookie_jar);
    
    my $parsing=$ua->get("http://incloak.com/proxy-list/",
            'User-Agent'      => 'Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/17.0 Firefox/17.0)',
            'Accept'          => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'Accept-Language' => 'en-us,en;q=0.5')->as_string;
    
    #       'Accept-Language' => 'en-us,en;q=0.5',
    #       'Accept-Encoding' => 'gzip, deflate')->as_string;
    
    # error     
    #my @proxy_list=($parsing=~/(d{1,3}.d{1,3}.d{1,3}.d{1,3})/g);
    #print"@proxy_list\n";
    
    print "$parsing\n";
    
    # parse in bash
    # perl test.pl | sed 's/</\n</g' | grep "<td>" | sed 's/<td>//g' | grep '\.'
    Желаю удачи