Формирование Get запроса (имитация нажатия кнопки на странице) - C#

Узнай цену своей работы

Формулировка задачи:

У меня задача такая: нужно съэмитировать нажатие кнопки на html странице без всяких WebBrowser и тп. Как я понял надо отправлять Get запрос на страницу. Ситуация такая: есть html страница расположенная по адрессу http://gallery.pitnet.ru/register.php на ней две кнопки, согласен и не согласен. Нужно нажать на первую. Когда на нее нажимаешь в браузере, адресс страницы остается тот-же, но содержимое меняется. То есть кнопка отправляет запрос какому-то скрипту. Пролистав исходный код страницы я не увидел никакого запроса. Может быть вы мне поможете. Вот код страницы:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html dir="ltr">
<head>
<title>фото.галерея | На других посмотреть и себя показать!</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<meta name="description" content="фото.галерея | На других посмотреть и себя показать!">
<meta name="keywords" content="">
<meta name="robots" content="index,follow">
<meta name="revisit-after" content="10 days">
<meta http-equiv="imagetoolbar" content="no">
<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />
<link rel="stylesheet" href="./templates/default/style.css?8" type="text/css">
<!--[if IE]><link rel="stylesheet" type="text/css" href="./templates/default/ie.css" media="all" /><![endif]-->
 <link rel="icon" type="image/png" href="./icon.png" />
<script language="javascript" type="text/javascript">
<!--
 
  var captcha_reload_count = 0;
    var captcha_image_url = "./captcha.php";
  function new_captcha_image() {
    if (captcha_image_url.indexOf('?') == -1) {
          document.getElementById('captcha_image').src= captcha_image_url+'?c='+captcha_reload_count;
        } else {
          document.getElementById('captcha_image').src= captcha_image_url+'&c='+captcha_reload_count;
        }
 
    document.getElementById('captcha_input').value="";
    document.getElementById('captcha_input').focus();
    captcha_reload_count++;
  }
 
// -->
</script>
<script type="text/javascript" src="js/detailsfunc.js"></script>
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="js/prototype.js"></script> 
<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="js/lightbox.js"></script>
<script type="text/javascript" src="highslide/highslide-with-html.js"></script>
<link rel="stylesheet" type="text/css" href="highslide/highslide.css" />
<script type="text/javascript">
    hs.graphicsDir = 'highslide/graphics/';
    hs.outlineType = 'rounded-white';
    hs.showCredits = false;
    hs.wrapperClassName = 'draggable-header';
        hs.align = 'center';
</script>
</head>
<body >
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="outl"></td>
<td width="1002">
<table width="100%" border="0" cellpadding="0" cellspacing="0"><td><!--ads_zone 1000x90 <embed src="ads/ads_1002x90_kino.swf" quality="high" bgcolor="#000" width="1000" height="90">-->
<table width="1002px" height="150px" border="0" cellpadding="0" cellspacing="0" class="shapka"><td>
<div class="na_8_marta"></div>
<div class="logo"><div id="zima"></div><div id="ngod"></div><div id="serd"></div><div id="zvezda"></div><div id="flo"></div><a href="/" alt="фото.галерея | photo.gallery | Фотографируем, общаемся, объединяемся!" title="фото.галерея | photo.gallery | Фотографируем, общаемся, объединяемся!"><img src="./templates/default/images/gall_sep.gif"></a></div>
<div class="adszone">
<!--первомайские шары-->  <div class="balmay"></div> <!--end первомайские шары-->
<!-- <a href="http://gallery.pitnet.ru/advanced/estetiq/estetiq.php"><img src="./ads/fraim.gif"></a> --> 
<div style="position: relative; float: right; right: 5px;">
<a href='http://tvmasterskaya.pitnet.ru/'><img src='ads/ads_250x90_tvm.jpg'  /></a>
</div>
<!-- <script language="JavaScript" type="text/javascript"> 
function randomize(min,max) {return((Math.ceil(Math.random() * (max - min + 1) + min - 1))+"")} 
document.write('<iframe width="250" height="90" src="ads/shapka25090_#id.html" frameborder="0" scrolling="no" ></iframe>'.replace(/#id/i,randomize(1,2))) 
</script> -->
<!-- 
<a href='http://tvmasterskaya.pitnet.ru/'><img src='ads/ads_250x90_tvm.jpg'  /></a>
 --></div>
</td></table></td>
<tr>
<td>
<table width="100%" border="0" cellpadding="10" cellspacing="0">
<tr>
<td width="32%" valign="top" class="lb">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<td class="bz">Фото.галерея</td>
<tr>
<td class="bc"><table width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr><td width="40%"><form action="./login.php" method="post">
    <table width="100%" border="0" cellpadding="0" cellspacing="5"><td><input type="text" name="user_name" class="logininput" value="Логин" onblur="if(this.value=='') this.value='Логин';"  onfocus="if(this.value=='Логин') this.value='';" /></td>
    <tr>
      <td><input type="password" name="user_password" class="logininput" value="Пароль" onblur="if(this.value=='') this.value='Пароль';" onfocus="if(this.value=='Пароль') this.value='';" /></td>
    <tr>
      <td><table border="0" cellspacing="0" cellpadding="0">
          <tr> 
            <td><input type="checkbox" name="auto_login" value="1" /></td>
            <td> Запомнить меня</td>
          </tr>
        </table></td>
    <tr>
      <td><input type="submit" value="Войти" class="button" style="width: 120px;"/></td>
    </table></form>
</td>
    <td width="60%" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="5"><td><li><a href="./member.php?action=lostpassword">Забыл пароль</a></li>
    <li><a href="./register.php">Регистрация</a></li><li><a href="complaint">Пожаловаться</a></li><li><a href="faq">Раздел помощи</a></li></td></table></td>
</table></td>
</table>
</td>
<td width="68%" valign="top" class="rb"><table width="100%" border="0" cellpadding="0" cellspacing="0">
  <td>    <td><table width="100%" border="0" cellpadding="0" cellspacing="0">
      <td class="clicks"><span class="clickstream"><a href="././" class="clickstream">Главная страница</a>&nbsp;&rarr;&nbsp;Регистрация</span></td>
      <tr>
        <td class="bcb"><!--rules-->
     
     <span class="vtext">Общие положения</span><br /><br />
Фото.галерея предназначена для размещения и обсуждения фотографий, общения как фотографов-профессионалов, так и фотолюбителей на темы, связанные с фотографией. Оценки, рейтинги - не более чем попытка отбора лучших фото при помощи самих участников. Не надо воспринимать их слишком серьезно. Помните что фото.галерея, не Ваш личный домашний фотоальбом, поэтому для "слива фоток с вечеринки" или фотографий типа "Отдыхаем =))" лучше воспользоваться другими ресурсами. Предпочтение отдается хорошей, качетвенной фотографии, фотографии сделанные мобильными телефонами и фотокамерами с низким разрешением будут удаляться на усмотрение администрацией ресурса. Приветствуется активная позиция участников, т.е. не просто присылаете фото и ждете откликов, а сами активно участвуете в обсуждениях. Мы уверены, что вы - честный человек, уважающий авторские права и других участников, поэтому ждем, что вы будете присылать только свои собственные фотографии, корректно и вежливо комментировать чужие фотографии, а также уважать чужое мнение (пусть и не совпадающее с вашим собственным). Если вы умеете или только пытаетесь создавать фотографии, которые не стыдно поместить в раму и повесить на стену - добро пожаловать!
<br /><br />
 
<ol>
<li><span class="tliul">Фотографии должны быть основаны на собственных (авторских, выполненных собственноручно) фотографиях участника, снятых на фотокамеру.</span></li>
<li><span class="tliul">Все фотографии принадлежат их авторам.</span></li>
<li><span class="tliul">Фотография должна быть в разрешенном формате нашей галереи, рекомендованные размеры: 900x1024px. В случае если Ваша фотография крупная - она автоматически уменьшится до рекомендованного размера при загрузке на сайт.</span></li>
<li><span class="tliul">Запрещено создание и/или использование нескольких аккаунтов одним участником за исключением служебных, которые разрешены администрацией.</span></li>
<li><span class="tliul">Запрещено участие фотографий, не являющихся собственностью самих авторов (сканированных из журналов, скопированных с web-сайтов и т.п.).</span></li>
<li><span class="tliul">Запрещена публикация любой порно продукции.</span></li>
<li><span class="tliul">Для эротических фото авторы обязаны указывать категорию "ню".</span></li>
<li><span class="tliul">Детская эротика запрещена.</span></li>
<li><span class="tliul">Запрещено размещение двух (и более) одинаковых снимков в галерее.</span></li>
<li><span class="tliul">Запрещено размещение более 5-ти снимков в сутки.</span></li>
<li><span class="tliul">Запрещены снимки низкого качества.</span></li>
<li><span class="tliul">Запрещены снимки с содержанием на них спиртных напитков, без художественного смысла.</span></li>
<li><span class="tliul">Запрещены любые переписки в комментариях, даем только конкретный комментарий к конкретной фотографии.</span></li>
<li><span class="tliul">Запрещена реклама (Отойти от правил можно с разрешения администратора).</span></li>
<li><span class="tliul">Запрещена продажа товаров (автомобилей, техники, предметов быта и т.п.). Размещение такого рода фотографий будет расценена как спам, флуд, флейм и т.п. Галерея - не газета бесплатных объявлений. Нарушители окажутся в блоке сроком от 10 дней и более.</span></li>
<li><span class="tliul">Снимки размещенные в несоответствующую теме фотографии в другую категорию - удаляются без ведома автора.</span></li>
<li><span class="tliul">Фотографии, нарушающие данные правила, удаляются без предварительного уведомления.</span></li>
<li><span class="tliul">Если вы используете один компьютер для нескольких человек для входа на сайт (например, муж и жена имеют разные аккаунты), во избежание ненужных недоразумений, предупредите об этом администрацию, и, пожалуйста, в таком случае не оценивайте друг друга (со стороны это будет выглядеть как накрутка), ведь вы можете сказать все непосредственно.</span></li>
<li><span class="tliul">В случае, если аккаунт участника, не используется более 6-х месяцев, он удаляется автоматически.</span></li>
<li><span class="tliul">Если комментарии посетителя носят оскорбительный характер, содержат не нормативную лексику (нецензурную брань), либо не удовлетворяют соображениям элементарной этики - аккаунт участника может быть заблокирован сроком от 20 дней и более (на усмотрение Администратора), а при систематическом повторении неэтичного поведения - аккаунт может быть удален.
<br />Администрация сайта оставляет право удаления комментариев на снимках учетным записям владельцу снимка без объяснения причины.</span></li>
<li><span class="tliul">Удаление опубликованных фотографий производиться по просьбе владельца снимка отправленной по контактам указанным 
в подписи сайта. Срок рассмотрения просьбы на удаление может достигать 10 рабочих дней (не считая праздников и форс мажорных обстоятельств). В любом случае, если Вы обратились с просьбой удалить ваши фотографии, а Вам не отвечают, попробуйте повторно сделать запрос на адрес электронной почты указанный в подписи сайта. Техника не идеальна и есть причины не зависящие от Администрации, по которым ваша просьба может быть не услышана. (плохое качество связи, сбои в серверном и клиентском ПО).</span></li>
<li><span class="tliul"> Запрещена публикация снимков и комментарием к ним в любой форме нарушающие законодательства РФ. (разжигание межнациональной розни, призывы к насилию и т.д.)
<li><span class="tliul">Администрация, оставляет за собой право наложения любых ограничений на учетные записи пользователей без предварительного уведомления и объяснения причин. 
<br />Помните: В чужом доме не будь приметлив, а будь приветлив. (с)</span></li>
<li><span class="tliul">С вопросами, пожеланиями и предложениями Вы можете обращаться на контакты указанные в подписи сайта.</span></li>
Любую корреспонденцию Вы всегда можете передать через нашего партнера с пометкой gallery.pitnet.ru
в лице ООО ''СитиНэт'' 685000 г. Магадан ул. Пролетарская д.68 офис сети ''ПитНет'.'</span></li>
</ol>
<br />
<span class="vtext">Ст. 130 «Оскорбление» Уголовного кодекса РФ гласит:</span>
<ol>
<li><span class="tliul">Оскорбление, то есть унижение чести и достоинства другого лица, выраженное в неприличной форме, – наказывается штрафом в размере до ста минимальных размеров оплаты труда или в размере заработной платы или иного дохода осужденного за период до одного месяца, либо обязательными работами на срок до ста двадцати часов, либо исправительными работами на срок до шести месяцев.</span></li>
<li><span class="tliul">Оскорбление, содержащееся в публичном выступлении, публично демонстрирующемся произведении или средствах массовой информации, – наказывается штрафом в размере до двухсот минимальных размеров оплаты труда или в размере заработной платы или иного дохода осужденного за период до двух месяцев, либо обязательными работами на срок до ста восьмидесяти часов, либо исправительными работами на срок до одного года.</span></li>
</ol>
<br />
<span class="vtext">Статья 20.1. Мелкое хулиганство:</span>
<ol>
<li><span class="tliul">Мелкое хулиганство, то есть нарушение общественного порядка, выражающее явное неуважение к обществу, сопровождающееся нецензурной бранью в общественных местах, оскорбительным приставанием к гражданам, а равно уничтожением или повреждением чужого имущества, – влечет наложение административного штрафа в размере от пяти до десяти минимальных размеров оплаты труда или административный арест на срок до пятнадцати суток.</span></li>
<li><span class="tliul">Те же действия, сопряженные с неповиновением законному требованию представителя власти либо иного лица, исполняющего обязанности по охране общественного порядка или пресекающего нарушение общественного порядка, – влекут наложение административного штрафа в размере от десяти до двадцати пяти минимальных размеров оплаты труда или административный арест на срок до пятнадцати суток.</span></li>
</ol><br />
<span class="vtext">Краткая юридическая справка: Чем отличается эротика от порнографии?</span>
<br /><br />
<table width="100%" border="0" cellpadding="10" cellspacing="0" style="border: 1px #bbb solid"><td>Чётких критериев, отличающих эротику от порнографии в российском законодательстве (а в общем-то и в международных актах тоже) ещё нет. Однако, есть критерии, выработанные юридической практикой. <br />
Порнографию от эротики, как правило, отличают по следующим критериям: <br />
крайне непристойное, циничное изображение половых отношений;<br />
цель — возбуждение половых инстинктов;<br />
акцент на физиологии аспектах половых отношений, открытый показ форм сексуальных отношений в натуральном виде.
«Детализированное, натуралистическое изображение, словесное описание или демонстрация полового акта, половых органов, имеющие целью сексуальное возбуждение», — так звучит подготовленное Минкультурой определение порнографии для нового законопроекта.<br />
Эротика также сопряжена с отображением человеческого тела, но в большей мере с целью подчеркнуть красоту человеческого тела, многообразие форм его выражения, без специальной цели вызвать желание полового сношения.<br />
Просмотр альбомов или разделов, содержащих эротические фото, разрешён только для посетителей, достигшим 18 лет. Ответственность за просмотр эротических изображений несовершеннолетним лицом лежит на его законном опекуне.</td></table>
     
     <!--rules end-->
<br /><br />
<table border="0" cellspacing="1" cellpadding="1" align="center">
  <tr>
    <td>
      <form method="post" action="./register.php">
        <input type="hidden" name="action" value="register" />
        <input type="submit" value="Согласен" class="button" />
      </form>
    </td>
    <td>
      <form method="post" action="././">
        <input type="submit" value="Не согласен" class="button" />
      </form>
    </td>
  </tr>
</table></td>
      </table></td>
  </table>
</td>
</table></td>
<tr>
<td><table width="100%" border=0 align="center" cellpadding=10 cellspacing=0 class="bordert0">
<tr>
<td valign="top">
<p class="copy">
Права на все фотографии, размещенные в фото.галерее, принадлежат авторам этих фото.<br />По вопросам использования фотографий в каких-либо целях убедительная просьба обращаться к их авторам.<br /><br />
Автор проекта: <a href="root">Виталий Марилов (root)</a> Вопросы на e-mail: <a href="mailto:removed@mail.ru" />removed@mail.ru</a><br /> Тех. поддержка, реклама: <a href="kapanir">Kapanir (Денис)</a>
<br /><br />
&laquo;Фото.Галерея&raquo; работает на <a href="http://4homepages.de/">4images 1.7.10</a><br />© 2006-2012 <a href="http://gallery.pitnet.ru/">&laquo;Фото.Галерея&raquo;</a></span>
</td></tr></table></td>
</table>
</td>
<td class="outr"></td>
</table>
</body>
</html>
Кнопки находятся вот тут:
<table border="0" cellspacing="1" cellpadding="1" align="center">
  <tr>
    <td>
      <form method="post" action="./register.php">
        <input type="hidden" name="action" value="register" />
        <input type="submit" value="Согласен" class="button" />
      </form>
    </td>
    <td>
      <form method="post" action="././">
        <input type="submit" value="Не согласен" class="button" />
      </form>
    </td>
  </tr>
</table></td>
      </table></td>
  </table>
</td>
</table></td>
Get запрос я отправляю вот так:
private static string GETRequest(string Url)
{
    System.Net.WebRequest req = System.Net.WebRequest.Create(Url);
    System.Net.WebResponse resp = req.GetResponse();
    System.IO.Stream stream = resp.GetResponseStream();
    System.IO.StreamReader sr = new System.IO.StreamReader(stream, System.Text.Encoding.Default);
    string Out = sr.ReadToEnd();
    sr.Close();
    return Out;
}
Заранее спасибо!

Решение задачи: «Формирование Get запроса (имитация нажатия кнопки на странице)»

textual
Листинг программы
System.Net.WebRequest reqPOST = System.Net.WebRequest.Create(@"http://gallery.pitnet.ru/register.php");
reqPOST.Method = "POST"; // Устанавливаем метод передачи данных в POST
reqPOST.Timeout = 120000; // Устанавливаем таймаут соединения
reqPOST.ContentType = "application/x-www-form-urlencoded"; // указываем тип контента
// передаем список пар параметров / значений для запрашиваемого скрипта методом POST
byte[] sentData = System.Text.Encoding.Default.GetBytes("message=" + System.Web.HttpUtility.UrlEncode("отправляемые данные"));
reqPOST.ContentLength = sentData.Length;
System.IO.Stream sendStream = reqPOST.GetRequestStream();
sendStream.Write(sentData, 0, sentData.Length);
sendStream.Close();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5