Помощь Импортирование капчи средствами PHP

Тема в разделе "DLE", создана пользователем crashwin, 3 июн 2010.

Информация :
Актуальная версия DataLife Engine 11.1
( Final Release v.11.1 | Скачать DataLife Engine | Скачать 11.1 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 10.0 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. crashwin

    crashwin Постоялец

    Регистр.:
    24 фев 2009
    Сообщения:
    50
    Симпатии:
    1
    Не нашел на эту тему ничего интересного, интересует такой вопрос: возможно ли импортировать капчу DLE в браузер средствами PHP? Есть скрипт DLE News Adder и 20 сайтов на DLE с капчей при добавлении новостей. Подскажите кто знает как и можно ли вообще сделать импорт;) Извиняюсь если ошибся разделом.
     
  2. crashwin

    crashwin Постоялец

    Регистр.:
    24 фев 2009
    Сообщения:
    50
    Симпатии:
    1
    Привет! Решил вернуться к этому вопросу под двиг DLE. В одну ночь раскурил cUrl и сделал авторизацию с записью кукисов. А дальше тупик, дело в том что curl-ом я авторизуюсь, и следом открываю сокет для передачи данных в /addnews.html но ничего не выходит(скрипт показывает страницу где я залогинился, а ниже страницу на которой не аторизирован, открытую сокетом для отправки в форму ). Подскажите чем грабить форму и как сделать чтоб это всё происходило на странице на которой curl нас залогинит. И каким способом лучше передать данные в addnews.htlm?
    PHP:
    $url 'http://dle.hi/addnews.html';
    $login  'admin';
    $pass 'admin';
       
    $ch curl_init(trim($url));
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4');
    curl_setopt($chCURLOPT_REFERERtrim($url));
    curl_setopt($chCURLOPT_POSTFIELDS'login=submit&login_name='.trim($login).'&login_password='.trim($pass));
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
          
    $cookiefile tempnam('cookie/1''cookie_');
    curl_setopt($chCURLOPT_COOKIEFILE$cookiefile);
    curl_setopt($chCURLOPT_COOKIEJAR$cookiefile);
       
    $res curl_exec($ch);
    curl_close($ch);
    echo 
    $res;
    #########################################отправка в /addnews.html######################################################3
    //открываем сокет к http://www.example.loc на 80-й порт с таймаутом в 30 секунд
    $socket fsockopen('www.dle.hi'80$errno$errstr30);
    //если fsockopen вернула false, то завершаем работу скрипта и выводим текст и номер ошибки
    if(!$socket)die("$errstr($errno)");
    //собираем данные сюда ставлю данные для добавления
    $data "title=".urlencode("John")."&short_story=".urlencode("Smith");
    //пишем в сокет метод, URI и протокол 
    fwrite($socket"POST /addnews.html HTTP/1.1\r\n");
    //а также имя хоста
    fwrite($socket"Host: www.dle.hi\r\n");
    //теперь отправляем заголовки
    //Content-type должен быть applicaion/x-www-form-urlencoded
    fwrite($socket,"Content-type: application/x-www-form-urlencoded\r\n");
    //размер передаваемых данных передаем в заголовке Content-length
    fwrite($socket,"Content-length:".strlen($data)."\r\n");
    //типы принимаемых данных. */* означает, что принимаем все типы данных
    fwrite($socket,"Accept:*/*\r\n");
    //представимся оперой
    fwrite($socket,"User-agent:Opera 10.00\r\n");
    fwrite($socket,"\r\n");
    //теперь передаем данные
    fwrite($socket,"$data\r\n");
    fwrite($socket,"\r\n");
    //теперь читаем и выводим ответ
    $answer '';
    while(!
    feof($socket)){
    $answer.= fgets($socket4096);
    }
    echo 
    $answer
    //закрываем сокет
    fclose($socket);
    Удалось словить заголовок POST запроса:
    PHP:
    POST /addnews.html title=Заголовок&alt_name=Альт.имя&catlist%5B%5D(категории)=2&bbfont=0&bbsize=0&short_story=краткая новость&full_story=большая новость&tags=&allow_comm=1&allow_main=1&approve=1&allow_rating=1&add=%EE%F2%EF%F0%E0%E2%E8%F2%FC&mod=addnews&enkbsjhk=de1fd1fa36b276fc8425fbc0d3c0fb8b
    Жду ответа!
     
  3. eugenel

    eugenel Постоялец

    Регистр.:
    3 авг 2008
    Сообщения:
    122
    Симпатии:
    14
    Форму грабить не нужно.
    просто узнай что отправляется этой формой. Например. в опере вместо метода отправки кода POST вписать GET и строке браузера узнать что передается. а дальше код:
    Это для метода POST. Для Get еще проще
     
  4. crashwin

    crashwin Постоялец

    Регистр.:
    24 фев 2009
    Сообщения:
    50
    Симпатии:
    1
    А как же выбор категорий?

    Вот код этой формы:

    PHP:

    <form method=post name="entryform" id="entryform" onsubmit="if(document.entryform.title.value == '' || document.entryform.short_story.value == ''){alert('У вашей статьи должен быть хотя бы заголовок и краткая версия');return false}" action="">                        <table width="100%" border="0" cellspacing="0" cellpadding="0">
                              <
    tr>

                                <
    td width="20" align="left" valign="top"><img src="/templates/Default/images/dlet_abl01.gif" width="20" height="30" alt="" /></td>
                                <
    td align="left" valign="top" class="abl02"><table width="100%" border="0" cellpadding="0" cellspacing="0" class="abl121">
                                    <
    tr>
                                      <
    td width="40" height="30"><img src="/templates/Default/images/spacer.gif" width="40" height="1" alt="" /></td>
                                      <
    td align="left" class="ntitle">Публикация новости на сайте</td>
                                    </
    tr>
                                  </
    table></td>
                                <
    td width="20" align="right" valign="top"><img src="/templates/Default/images/dlet_abl13.gif" width="20" height="30" alt="" /></td>

                              </
    tr>
                              <
    tr>
                                <
    td width="20" align="left" valign="top"><img src="/templates/Default/images/dlet_abl51.gif" width="20" height="30" alt="" /></td>
                                <
    td align="left" valign="top" class="abl22"><table width="100%" border="0" cellspacing="0" cellpadding="0">
                                    <
    tr>
                                      <
    td height="30" class="abl221">&nbsp;</td>
                                    </
    tr>
                                  </
    table></td>
                                <
    td width="20" align="right" valign="top"><img src="/templates/Default/images/dlet_abl53.gif" width="20" height="30" alt="" /></td>

                              </
    tr>
                              <
    tr>
                                <
    td width="20" align="left" valign="top" class="abl31"><img src="/templates/Default/images/spacer.gif" width="20" height="1" alt="" /></td>
                                <
    td align="left" valign="top" class="stext">

                        <
    table width="99%" border="0" cellpadding="0" cellspacing="0">
                          <
    tr>
                            <
    td width="110" height="25" nowrap="nowrap">Введите заголовок:</td>
                            <
    td><input type="text" name="title" value="" maxlength="150" class="f_input" /></td>

                          </
    tr>

                          <
    tr>
                            <
    td height="25" nowrap="nowrap">URL статьи:</td>
                            <
    td><input type="text" name="alt_name" value="" maxlength="150" class="f_input" /></td>
                          </
    tr>

                          <
    tr>
                            <
    td height="25">Категория:</td>

                            <
    td style="padding-bottom:5px;"><select name="catlist[]" id="category" onchange="onCategoryChange(this.value)" style="width:316px;height:73px;" multiple><option value="0"></option><option style="color: black" value="1" >Информация</option><option style="color: black" value="2" >xxx</option></select></td>
                          </
    tr>

                          <
    tr>
    <
    tr>
                            <
    td>Краткое содержание:</td>

                            <
    td style="padding-bottom:5px;"><textarea name="short_story" id="short_story" onclick=setFieldName(this.namestyle="width:98%; height:160px" class="f_textarea" /></textarea></td>
                          </
    tr>
                          <
    tr>
                            <
    td>Полная новость:<br />(необязательно)</td>
                            <
    td><textarea name="full_story" id="full_story" onclick=setFieldName(this.namestyle="width:98%; height:200px" class="f_textarea" /></textarea></td>
                          </
    tr>
                          <
    tr>

                            <
    td height="25" nowrap="nowrap">Ключевые слова<br />для облака тегов:</td>
                            <
    td><input type="text" name="tags" value="" maxlength="150" class="f_input" /></td>
                          </
    tr>

    <
    script type="text/javascript">
    <!--
      var 
    item null;
      if (
    document.getElementById) {
        
    item document.getElementById("category");
      } else if (
    document.all) {
        
    item document.all["category"];
      } else if (
    document.layers) {
        
    item document.layers["category"];
      }
      if (
    item) {
        
    onCategoryChange(item.value);
      }
    // -->
    </script>

                          <tr>
                            <td width="110">&nbsp;</td>
                            <td><input type="checkbox" name="allow_comm" id="allow_comm" value="1" checked="checked" /><label for="allow_comm">Разрешить комментарии</label>&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="allow_main" id="allow_main" value="1" checked="checked" /><label for="allow_main">Публиковать на главной</label><br /><input type="checkbox" name="approve" id="approve" value="1" checked="checked" /><label for="approve"> Опубликовать новость на сайте</label><br /><input type="checkbox" name="allow_rating" id="allow_rating" value="1" checked="checked" /><label for="allow_rating"> Разрешить рейтинг статьи</label><br /><input type="checkbox" name="news_fixed" id="news_fixed" value="1" /><label for="news_fixed"> Зафиксировать новость</label></td>

                          </tr>
                          <tr>
                            <td width="110">&nbsp;</td>
                            <td><input class="bbcodes_poll" type="submit" name="add" value="отправить" />  
                            <input class="bbcodes_poll" type="button" name="nview" onclick="preview()" value="просмотр" /></td>
                          </tr>
                        </table>


    А как грабить форму?
     
  5. eugenel

    eugenel Постоялец

    Регистр.:
    3 авг 2008
    Сообщения:
    122
    Симпатии:
    14
    Начнем с главного.
    1)Что значит для вас грабить?
    2) Если не секрет, для какоц именно цели?
     
  6. crashwin

    crashwin Постоялец

    Регистр.:
    24 фев 2009
    Сообщения:
    50
    Симпатии:
    1
    хм, сграбить то-есть импортировать в форму из addnews.html к себе, но эту форму показывать например немного ниже. Скрипт делаю на подобии DLE news adder, а нужен он мне для наполнения 20 своих сайтов на двиге DLE. Просто руками в лом, а покупаль Addnews нет смысла т.к дорого да и сайты не на русском языке. И вообще как новичок в PHP хочу попробовать свои силы.
    Ещё интересует как импортировать капчу с сайта к себе в браузер.
     
Статус темы:
Закрыта.