Прямая ссылка на капчу PHP-форума

Discussion in 'PHP' started by alex.k12, 3 May 2009.

  1. alex.k12

    alex.k12 New Member

    Joined:
    3 May 2009
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте,
    долго думал, в какую тему это написать.
    Пишу флудер на PHP для форума на PHP. Капча-солвер уже есть, но и я никак не могу получить прямую ссылку на на саму капчу.
    За ее отрисовку отвечает captcha.php. Прямое обращение к www. ... /captcha.php через браузер приводит к блокировке IP на час (видимо, защита от DDOS). Есть система обновления капчи - яваскриптом меняется src картинки на "captcha.php?" + Math.random(); (Math.random(); - псевдослучайное число от 0.0 до 0.1). Переход по адресу captcha.php?0.74653984762364762 (любое случайное число) даёт пустую страницу.
    Я пытался отследить входящие и исходящие пакеты с помощью HTTPAnalyzer4 и скорректировать их с помощью InetCrack 1.39. Получилось, что пакеты, отправляемые на captcha.php при полном обновлении страницы с капчей и пакеты, отправляемые при прямом обращении к captcha.php, полностью аналогичны, но в первом случает капча отображается, ответ сервера -

    (Status-Line):HTTP/1.1 200 OK
    Server:nginx
    Date:Sun, 03 May 2009 10:23:59 GMT
    Content-Type:image/jpeg
    Connection:keep-alive
    X-Powered-By:pHP/5.2.5
    Expires:Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma:no-cache
    Content-Length:2602

    а во втором капчи нет и ответ -

    (Status-Line):HTTP/1.1 200 OK
    Server:nginx
    Date:Sun, 03 May 2009 10:26:26 GMT
    Content-Type:text/html; charset=utf-8
    Connection:keep-alive
    X-Powered-By:pHP/5.2.5
    Content-Length:0

    Я совсем недавно начал программировать на PHP, с перловой капчей никогда таких проблем не было, так что я мог упустить что-нибудь элементарное(хотя вопрос мало относится к программированию). В общем, нужна прямая ссылка на капчу.
     
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    alex.k12 Покажи запросы, которые отсылаешь ты, и отсылает бразуер. Проблема скорее всего в отсутствующих/лишних заголовках, отсутствие печенек от реги
     
    _________________________
  3. alex.k12

    alex.k12 New Member

    Joined:
    3 May 2009
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    Это запрос при обновлении яваскриптом, капча отображается:

    (Request-Line):GET /captcha.php?0.4754704378147092 HTTP/1.1
    Host:www.xxx.ru
    User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10
    Accept:image/png,image/*;q=0.8,*/*;q=0.5
    Accept-Language:ru,en-us;q=0.7,en;q=0.3
    Accept-Encoding:gzip,deflate
    Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.7
    Keep-Alive:300
    Connection:keep-alive
    Referer:http://www.xxx.ru/thread/
    Cookie: ptime=1241296071153; postpassword=GnBUUhUE; __utma=258285515.2829712575002160600.1241289110.1241297769.1241345446.3; __utmz=258285515.1241289110.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=258285515; PHPSESSID=r8gnmi48baunol1g8hr6c4nbe7; __utmb=258285515.5.10.1241345446

    Это запрос при обновлении яваскриптом, но уже с локальной (сохраненной) страницы, капча не отображается:

    (Request-Line):GET /captcha.php?0.08763163143809893 HTTP/1.1
    Host:www.xxx.ru
    User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10
    Accept:image/png,image/*;q=0.8,*/*;q=0.5
    Accept-Language:ru,en-us;q=0.7,en;q=0.3
    Accept-Encoding:gzip,deflate
    Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.7
    Keep-Alive:300
    Connection:keep-alive
    Cookie: ptime=1241296071153; postpassword=GnBUUhUE; __utma=258285515.2829712575002160600.1241289110.1241297769.1241345446.3; __utmz=258285515.1241289110.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=258285515; PHPSESSID=r8gnmi48baunol1g8hr6c4nbe7; __utmb=258285515.5.10.1241345446


    Как видно, разница только в реферере, который я потом меняю в InetCrack (и в ответе все равно не получаю капчу), и в случайно сгенерированном числе.
     
  4. alex.k12

    alex.k12 New Member

    Joined:
    3 May 2009
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    0chan.ru
     
  5. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Реферер не передаешь, с ним все работает
     
    _________________________
    #5 Gifts, 3 May 2009
    Last edited: 3 May 2009
  6. alex.k12

    alex.k12 New Member

    Joined:
    3 May 2009
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    Хм, в InetCrack отсылаю следующий запрос:
    GET http://www.0chan.ru/captcha.php?0.74863849026476354 HTTP/1.1
    Host:www.0chan.ru
    User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10
    Accept:image/png,image/*;q=0.8,*/*;q=0.5
    Accept-Language:ru,en-us;q=0.7,en;q=0.3
    Accept-Encoding:gzip,deflate
    Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.7
    Keep-Alive:300
    Connection:keep-alive
    Referer:http://www.0chan.ru/a/
    Cookie:kustyle_site=Photon; kustyle=Photon; ptime=1241357131244; postpassword=GnBUUhUE; __utma=258285515.2829712575002160600.1241289110.1241345446.1241349907.4; __utmz=258285515.1241289110.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=258285515; PHPSESSID=r8gnmi48baunol1g8hr6c4nbe7; __utmb=258285515.6.10.1241349907

    Получаю ответ:

    HTTP/1.1 200 OK
    Server=nginx
    Date=Sun, 03 May 2009 11:37:49 GMT
    Content-Type=text/html; charset=utf-8
    Connection=keep-alive
    X-Powered-By=PHP/5.2.5
    Content-Length=0

    Реферер есть, капчи нет. Gifts, как/с помощью чего ты передаешь?
     
  7. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    alex.k12
    PHP:
    $a = array("GET /captcha.php?0.74863849026476354 HTTP/1.1",
    "Host: www.0chan.ru",
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv: 1.9.0.10) Gecko/2009042316 Firefox/3.0.10",
    "Accept: image/png,image/*;q=0.8,*/*;q=0.5",
    "Accept-Language: ru,en-us;q=0.7,en;q=0.3",
    "Accept-Encoding: gzip,deflate",
    "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7",
    "Keep-Alive: 300",
    "Connection: keep-alive",
     
    "Referer: http://www.0chan.ru/",
    "Cookie: kustyle_site=Photon; kustyle=Photon; ptime=1241357131244; postpassword=GnBUUhUE; __utma=258285515.2829712575002160600.1241289110.12 41345446.1241349907.4; __utmz=258285515.1241289110.1.1.utmcsr=(direct)|ut mccn=(direct)|utmcmd=(none); __utmc=258285515; PHPSESSID=r8gnmi48baunol1g8hr6c4nbe7; __utmb=258285515.6.10.1241349907",
    "\r\n");
    $f fsockopen('www.0chan.ru',80) or die('Can\'t connect');
    fwrite($f,implode("\r\n",$a));
    while (
    $in fread($f,4096))
    {echo 
    $in;}
    fclose($f);
     
    _________________________
    #7 Gifts, 3 May 2009
    Last edited: 3 May 2009
  8. alex.k12

    alex.k12 New Member

    Joined:
    3 May 2009
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    Warning: fsockopen() [function.fsockopen]: unable to connect to www.0chan.ru:80 (Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера. ) in C:\www\index.php on line 14

    Дело в настройках сервера, наверное.
     
    #8 alex.k12, 3 May 2009
    Last edited: 3 May 2009
  9. alex.k12

    alex.k12 New Member

    Joined:
    3 May 2009
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    Дело в InetCracker'e. Не знаю почему, но тот же самый запрос в другой программе исправно выдает капчу, всё в порядке. Спасибо за помощь.

    Теперь другой вопрос, теперь уже по PHP. Перерыл все настройки, а ошибка всё та же. Гугл не помог. Gifts, если не сложно, выложи настройки PHP и Apache (если ты его используешь). Вот мои настройки http://rapidshare.com/files/228705261/info.rar.html
     
    #9 alex.k12, 3 May 2009
    Last edited: 3 May 2009
  10. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    alex.k12 Проблема скорее всего не в ПХП, сокеты у вас включены. Возможно фаер блочит соединение?

    Попробуйте банально:
    PHP:
    echo file_get_contents ('http://www.0chan.ru/captcha.php?0.74863849026476354');
    Или попробуйте включить курл (в php.ini найдите строчку ";extension=php_curl.dll" и убрать точку с запятой) И попробовать этот скрипт:

    PHP:
    <?

    function 
    post($url='',$content='',$referer='')
    {
        GLOBAL 
    $cookie,$verbose;

        
    $ch curl_init();  
        
    curl_setopt($chCURLOPT_URL,$url);
        
    curl_setopt($chCURLOPT_HEADER1);
        
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
        
    curl_setopt($chCURLOPT_FOLLOWLOCATION,0);
        
    curl_setopt($chCURLOPT_TIMEOUT15);
        
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');

        
        if (
    $cookiecurl_setopt($chCURLOPT_COOKIEimplode('; ',$cookie));
        if (
    $content) {curl_setopt($chCURLOPT_POST3011); curl_setopt($chCURLOPT_POST1);curl_setopt($chCURLOPT_POSTFIELDS$content);} else {curl_setopt($chCURLOPT_POST0);}
        if (
    $referercurl_setopt($chCURLOPT_REFERER$referer);

        
    $ss=curl_exec($ch);
        
    curl_close($ch);

        if (
    preg_match_all('#^Set-Cookie: (([^;=]+)=([^;=\n\r]+))#mi',$ss,$cook)) 
        {
            if (
    $tmpcookie=array_combine($cook[2],$cook[1]))
            
    $cookie=(array)$tmpcookie + (array)$cookie;
        }
        
        
    $ss=preg_replace('~^.*?\r\n\r\n~si','',$ss);
        return 
    $ss;
    }

    echo 
    post('http://www.0chan.ru/captcha.php?0.74863849026476354'null'http://www.0chan.ru/');
    Копия скрипта тут: http://deadone.info/chan.txt
     
    _________________________
    #10 Gifts, 3 May 2009
    Last edited: 3 May 2009
  11. alex.k12

    alex.k12 New Member

    Joined:
    3 May 2009
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    C курлом всё работает замечательно. Интересно только почему с fsockopen() проблемы.
    echo file_get_contents ('http://www.0chan.ru/captcha.php?0.74863849026476354') выдает пустую страницу, как при прямом обращении http://www.0chan.ru/captcha.php?0.74863849026476354 из браузера, т.е. без реферера никак, нужен запрос.
     
    #11 alex.k12, 3 May 2009
    Last edited: 3 May 2009