ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Отправка данных в форму при открытой сессии.
  #1  
Старый 04.06.2010, 23:02
crashwin
Новичок
Регистрация: 03.08.2009
Сообщений: 7
Провел на форуме:
30539

Репутация: 0
По умолчанию Отправка данных в форму при открытой сессии.

Привет! Понадобился скрипт для наполнения сайтов на двиге DLE. В одну ночь раскурил cUrl и сделал авторизацию с записью кукисов. А дальше тупик, дело в том что curl-ом я авторизуюсь, и следом пытаюсь открыть сокет для передачи данных в /addnews.html но ничего не выходит(скрипт показывает страницу где я залогинился, а ниже страницу на которой не аторизирован, открытую сокетом для отправки в форму данных ). Подскажите чем грабить форму и как сделать чтоб это всё происходило на странице на которой curl нас залогинит (с открытой сессией). И каким способом лучше передать данные в addnews.htlm?

Мой скрипт:


PHP код:

$url 
'http://dle.hi/addnews.html';
$login  'admin';
$pass 'admin';
$title 'dflskd;jfs;dlkjf;sdjf;s';
$story 'ldf;lgjd;fljgd;fklgjd;fklgjd;fjg;dfjg';
$full 'as;lkdja;lsdjka;lsjd;alsjd'
   
$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_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;
###############################################################################################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 

Код формы в которую нужно передать данные те. /addnews.html:

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>
                        <
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
Жду ответа!
 
Ответить с цитированием

  #2  
Старый 05.06.2010, 00:50
roxblnfk
Познающий
Регистрация: 07.02.2010
Сообщений: 70
Провел на форуме:
217996

Репутация: 56
Отправить сообщение для roxblnfk с помощью ICQ
По умолчанию

Ты после авторизации курлом не отправляешь куки через сокет.
А HTTP запрос через сокет можешь осуществить моей функцией https://forum.antichat.ru/showthread.php?t=200568
 
Ответить с цитированием

  #3  
Старый 05.06.2010, 01:01
crashwin
Новичок
Регистрация: 03.08.2009
Сообщений: 7
Провел на форуме:
30539

Репутация: 0
По умолчанию

Проблема ещё в том что нужно выбирать категорию (как это реализовать понятия не имею), думал может как-то удастся сграбить форму для последующего заполнения.
 
Ответить с цитированием

  #4  
Старый 05.06.2010, 01:25
roxblnfk
Познающий
Регистрация: 07.02.2010
Сообщений: 70
Провел на форуме:
217996

Репутация: 56
Отправить сообщение для roxblnfk с помощью ICQ
По умолчанию

Смотришь сюда:
PHP код:
<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
для POST: берёшь name от select и присваиваешь ему value от нужных категорий
Например, если выбрать первую и последнюю категории, то в пост пойдёт: catlist[]=0&catlist[]=2
или в кодированном виде: catlist%5B%5D=0&catlist%5B%5D=2

Проблема в том, чтобы изьять эти name и value чтоли?
 
Ответить с цитированием

  #5  
Старый 05.06.2010, 01:47
crashwin
Новичок
Регистрация: 03.08.2009
Сообщений: 7
Провел на форуме:
30539

Репутация: 0
По умолчанию

с одним сайтом да, проблем не будет... но если сайтов 20, здесь думаю нужно будет сравнение по категориям. Ну а я как новичок не скоро в этом разберусь. А пока курю передачу cookies сокетами.
 
Ответить с цитированием

  #6  
Старый 05.06.2010, 01:55
roxblnfk
Познающий
Регистрация: 07.02.2010
Сообщений: 70
Провел на форуме:
217996

Репутация: 56
Отправить сообщение для roxblnfk с помощью ICQ
По умолчанию

чё там курить, всё просто:
"Cookie: cook1=value; cook2=123; cook3=""; PHPSESSID=sdfasnldcfhdausvgfasl\r\n"
ко всем значениям применить urlencode()
 
Ответить с цитированием

  #7  
Старый 05.06.2010, 02:01
crashwin
Новичок
Регистрация: 03.08.2009
Сообщений: 7
Провел на форуме:
30539

Репутация: 0
По умолчанию

Для новичка всё курить надо

roxblnfk стукните мне на icq: 55380401семь
нужна Ваша помощь.
 
Ответить с цитированием

  #8  
Старый 05.06.2010, 05:40
crashwin
Новичок
Регистрация: 03.08.2009
Сообщений: 7
Провел на форуме:
30539

Репутация: 0
По умолчанию

! Подскажите можно ли как-нить сохранить, или напрямую отобразить картинку со страници, только это не обычная картинка а код(на сайте, защита от ботов, captcha). Путь картинки ничего собой не представляет и просто так не открыть, оно только грузится в браузере когда заходиш на страницу, так вот я и думаю, можна ли как-то сохранить эту картинку????

http://site.com/engine/modules/antibot.php?rndval=какие-то цифры
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хакер и закон! SladerNon Болталка 17 12.11.2009 09:42
[статья] Винты. Беды. Cthulchu Аппаратное обеспечение 7 13.05.2009 15:41
Защищаем MySql. Шаг за шагом k00p3r Чужие Статьи 0 13.06.2005 11:18
Проверка надежности Web-приложений. Часть Третья k00p3r Чужие Статьи 0 13.06.2005 11:17
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ