Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 PHP генератор на HTTP заявки през случайно избран proxy със свободен достъп
  1. HTTP GET заявка към определен сайт
     
Автор  plamenSm (31.03.2008 12:37)  съобщение до автора
Погледнат  2353 пъти  добави към любими
Оценка  добави коментар
Гласове  --  изпрати на приятел
Коментари  (0)  абонирай се за PHP
    Страница 1 / 1

 



Този скрипт демонстрира как може да се изпрати HTTP GET заявка към определен сайт, като се използва proxy, който е избран случайно от списък със свободно достъпни такива.

Файлове:

  • proxy.txt - списък на свободно достъпни proxy
  • update.txt - датата на последното обновяване на списъка
  • proxy.php - скриптът който чете и обновява списъка и датата, и генерира GET заявки

    Трите файла трябва да са записани в една и съща директория на вашия сървър.


    Няколко предварителни обяснения:

    Броя на заявките се задава предварително, но реално генерираните може да са по-малко или изобщо да няма такива, ако в момента на стартиране на скрипта някои или всички от избраните proxy не работи.

    PHP скриптът изтегля списък със свободно достъпни proxy от http://www.steganos.com/?area=updateproxylist. Резултатът е plain text, който директно може да се запише в текстов файл с IP адреси и портове, по един на ред. Надявам се, че когато решите да пробвате този скрипт, списъктът ще е online.

    Списък на свободно достъпни proxy в България можете да намерите на:

    http://www.aliveproxy.com/proxy-list/proxies.aspx/Bulgaria-bg, но този URL неможе да се използва директно в скрипта, тъй като резултата е HTML.


    В случай, че е невъзможно автоматично извличане, можете ръчно да въведете адреси, които знаете в proxy.txt. Създайте файла в директорията, където е proxy.php и напишете адреси заедно с портовете - по един на ред:


    207.156.32.23:80
    203.156.35.123:8080
    154.166.32.23:444

    ...

    При вариянта с ръчно въвеждане на адресите е важно да създадете и файл update.txt в който да запишете само един ред с датата на последно обновяване на proxy.txt.
    Форматът е: „гггг-мм-дд”. Например: 2008-03-31. Този файл също трябва да бъде в директорията, където е proxy.php.

    Ако искате скриптът да се изпълнява автоматично през определен период от време или в определено време (чрез Cron-jobs / Scheduled Tasks), трябва да знаете как да настроите вашия сървър.


    proxy.php:

    CODE
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    <?php
    // Изключваме извеждането на евентуални предупреждения от PHP
    error_reporting(0);

    // Задаваме url, който да получава Get заявките
    // "/" в края на адреса е задължителен!
    $url_1 = "http://www.thedomain.com/";

    // Задаваме сървър и порт
    $theserver = "thedomain:80";

    // Задаваме броя на заявките, които ще се генерират при всяко стартиране
    $randnr = 2;

    // Ако ръчно сте задали адресите в proxy.txt, заменете функцията date()
    // с дата, която сте записали в update.txt пр: $today = "2008-03-31";
    $today = date('Y-m-d');

    /* Понеже взимаме списъка с proxy адресите от външен сайт, скрипта ще работи по-бързо ако извличаме и записваме веднъж дневно тези адреси в локален файл - proxy.txt и после използваме този файл вместо обръщение към отдалечен сървър */

    /* Сега да проверим дали локалния ни списък е обновяван днес, и ако не е да го изтеглим и запишем в proxy.txt */

    // Прочитаме update.txt
    $lines = file("update.txt");
    if(trim($lines[0]) == $today){

    // ДА – списъкът е актуален. Взимаме го в променливата $proxies
     
    $proxies = file("proxy.txt");
    }else{

    // НЕ – необходимо е обновяване. Взимаме списъка от steganos.com
    $proxies = file('http://www.steganos.com/?area=updateproxylist');
    $size = count($proxies);
    $openfile = fopen("proxy.txt","w+");


    // Записваме новия списък в локалния файл proxy.txt
     
    for($x=0;$x<$size;$x++){
       
    $line =trim($proxies[$x]);
       
    fwrite($openfile, $line);
       
    if($x!=$size-1){
         
    fwrite($openfile, " \r\n");
      
    }
    }
    fclose($openfile);


    // Отбелязваме че списъкът е обновен днес в update.txt
     
    $openfile = fopen("update.txt","w+");
     
    fwrite($openfile, $today);
     
    fclose($openfile);
    }

    // Взимаме определения чрез $randnr брой случайни адреси от списъка
    $getrand = array_rand($proxies, $randnr);


    // Изклчваме „timed out”, тъй като изпълнението на скрипта може да отнеме
    // повече време от определения на сървъра лимит
    set_time_limit(0);


    for( $x = 0; $x < $randnr; $x++ ){ 
    // Сега ще отделим адреса от порта
     
    $PROXY_URL=$proxies[$getrand[$x]];
        
    $proxyarr = explode(":", $PROXY_URL);
        
    $address = trim($proxyarr[0]);
        
    $port = trim($proxyarr[1]);


    // Следващия код създава хедъра на HTTP заявката
     
    $headerinfo =array(
       
    'User-Agent' => 'my User Agent (proxy.php)',
       
    'Accept' => 'image/gif, image/x-xbitmap, image/jpeg, image/png, */*',
       
    'Pragma' => 'no-cache',
       
    'Connection' => 'keep-alive');
     
    reset($headerinfo);


    // Вече сме готови да изпратим заявка през proxy
     
    $fp=fsockopen($address,$port);
     
    if($fp) {
         
    fputs($fp,"GET $url_1 HTTP/1.1 \r\n ");
         
    fputs($fp,"Host: $theserverrn ");
         
    reset($headerinfo);
          
    while(list($header,$value)=each($headerinfo)) {
            
    fputs($fp,"$header: $valuern");
            
    // Да оставим малко време между заявките
            
    sleep(2)
          
    }
         
    fputs($fp,"\r\n");
         
    fclose($fp);
     
    }
    }
    ?>

    Запишете трите файла в една директория на вашия сървър и стартирайте cron -job за него.

    Например:


    или


    Чрез cron-jobs можете да планирате изпълнение на скрипта в определено време или през определен интервал от време – на всеки час, през една минута, всеки ден в 9:00 и т.н. – както желаете.

    В краен случай, ако нямате достъп или възможност да настроите периодично изпълнение на скрипта на сървъра, може да го стартирате периодично и от вашия личен компютър (например за Windows – чрез Scheduled Task).


    Заключение

    Както виждате, скриптът в този си вид не върши нищо съществено. Целта на урока е да покаже някои интересни техники, които могат да ви бъдат от полза. Можете да преработите този скрипт според ваши специфични нужди или да използвате фрагменти от него в други скриптове.


    Източник: bewebmaster.com


  •    


    Ключови думи: PHP HTTP Proxy свободен достъп HTTP заявка PHP генератор


    Още уроци от тази рубрика


     
    • Подобни теми от myLinks
     

     2 посетители четат този урок (0 потребители и 2 гости)  
    Активни потребители: ---
       
      

    Еmail  
     

     

     
    • Интересно от Софтуер
     



    IT-PLACE.NET © 2004 - 2008