Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   На сайте есть форма для заполнения, нужно отправить 15к одинаковых запросов (https://forum.antichat.xyz/showthread.php?t=164786)

sultan128 20.12.2009 02:46

На сайте есть форма для заполнения, нужно отправить 15к одинаковых запросов
 
Собственно сабж.
Сама форма:
Код:

<form action="/cgi-bin/faq.cgi" method="post" name="frmSend" id="frmSend" enctype="multipart/form-data" style="margin:0;" onSubmit="alert

('!!!!'); return SendData();"><TABLE width="100%">
                                                <TR>
                                                        <TD class="label"><B class="red">*</B> Имя и фамилия</TD>

                                                        <TD class="input"><INPUT name="name" type="text" class="wide" id="name" maxlength="255"></TD>
                                                </TR>
                                                <TR>
                                                        <TD class="label"><B class="red">*</B> Род деятельности</TD>
                                                        <TD class="input"><INPUT name="title" type="text" class="wide" id="title" maxlength="255"></TD>
                                                </TR>
                                                <TR>

                                                        <TD class="label"><B class="red">*</B> Город проживания</TD>
                                                        <TD class="input"><INPUT name="city" type="text" class="wide" id="city" maxlength="255"></TD>
                                                </TR>
                                                <TR>
                                                        <TD class="label"><B class="red">*</B> Контактный телефон</TD>
                                                        <TD class="input"><INPUT name="phone" type="text" class="wide" id="phone" maxlength="255"></TD>

                                                </TR>
                                                <TR>
                                                        <TD class="label">E-Mail</TD>
                                                        <TD class="input"><INPUT name="email" type="text" class="wide" id="email" maxlength="255"></TD>
                                                </TR>
                                                <TR>
                                                        <TD class="label"><B class="red">*</B> Вопрос</TD>

                                                        <TD class="input"><TEXTAREA name="question" cols="40" rows="5" class="wide" id="question"

style="width:100%"></TEXTAREA><BR><SPAN class="footnote" style="padding-left:0px; ">не более 150-ти символов</SPAN></TD>
                                                </TR>
                                                <TR>
                                                        <TD class="label"><B class="red">*</B> Ответ</TD>
                                                        <TD class="input"><TEXTAREA name="answer" cols="40" rows="5" class="wide" id="answer"

style="width:100%" ></TEXTAREA></TD>
                                                </TR>
                                                <TR>

                                                        <TD class="label"><B class="red">*</B> Откуда узнали о нас?</TD>
                                                        <TD class="input"><INPUT name="source" type="text" class="wide" id="source" maxlength="255"></TD>
                                                </TR>
                                                <TR>
                                                        <TD class="label">Фото</TD>
                                                        <TD class="input"><INPUT name="photo" type="file" class="wide" id="photo" maxlength="255"></TD>
                                                </TR>

                                                <TR>
                                                        <TD>&nbsp;</TD>
                                                        <TD><DIV class="button"><A href="#" onClick="return SendData();">Отправить</A></DIV></TD>
                                                </TR>
                                        </TABLE>
                                        <br><span class="footnote red"><B>*</B> - обязательные для заполнения поля</span>
</FORM>                                                        </TD>

Также на сайте имеется следующий скрипт:
Код:

<script>
  function SendData() {
        if (document.frmSend.name.value == "") {
      window.alert("Вы не указали свое имя.");
      return false;
    }
    if (document.frmSend.name.value.length > 20) {
      window.alert("Поле \"Имя и фамилия\" не может содержать более 20 символов.");
      return false;
    }
    if (document.frmSend.title.value == "") {
      window.alert("Укажите, пожалуйста, род своей деятельности.");
      return false;
    }
    if (document.frmSend.city.value == "") {
      window.alert("Не указан город проживания.");
      return false;
    }
    if (document.frmSend.phone.value == "") {
      window.alert("Не указан телефон телефон.");
      return false;
    }
    if (document.frmSend.question.value == "") {
      window.alert("Вы не задали вопрос");
      return false;
    }
        if (document.frmSend.question.value.length > 150) {
      window.alert("Вопрос слишком длинный. Постарайтесь уложиться в 150 символов.");
      return false;
    }
    if (document.frmSend.answer.value == "") {
      window.alert("Вы забыли дать ответ на вопрос.");
      return false;
    }
        if (document.frmSend.answer.value.length > 120) {
      window.alert("Ответ слишком длинный. Постарайтесь уложиться в 120 символов.");
      return false;
    }
        if (document.frmSend.source.value == "") {
      window.alert("Укажите, пожалуйста, источник Вашей информации.");
      return false;
    }
    return frmSend.submit();
  }
</script>

Нужно, чтобы отправилось 15к-20к запросов, с данными: text1, text2... соответственно в полях со звездочками. Без проксей и каптч. Как такое реализовать?

brainy 20.12.2009 03:22

купить или попросить кого-то из владельцев хуман емулятора сделать скрипт
дело нескольких минут

lo0 20.12.2009 11:46

Код:

import urllib2, urllib

urllib2.install_opener(urllib2.build_opener())
params = {'name':'Свое значение',
          'title':'Свое значение',
          'city':'Свое значение',
          'phone':'Свое значение',
          'email':'Свое значение',
          'question':'Свое значение',
          'answer':'Свое значение',
          'source':'Свое значение'}
result = urllib2.urlopen('www.DOMAIN.com/cgi-bin/faq.cgi',urllib.urlencode(params)).read()

result оставляю на твое усмотрение, в дальнейшем можно чекать ответ от сервера :)

sultan128 20.12.2009 23:58

lo0
Я, признаться, в языках программирования не силен, буду благодарен, если разъяснишь, что с этим надо делать, или дашь свою асю..

lo0 21.12.2009 00:41

Можно в ПМ писать, помогу
1. Сохраняешь все это дело в файл file_nbame.py
2. Вместо слов 'Свое значение' указываешь свои данные
3. www.DOMAIN.com - заменяешь на свой сайт
4. Если у тя не уставновлен питон, то нужно установить
5. Запускаем скрипт: python file_nbame.py

PS: 5-й пункт отлично работает под никсами(у меня не винда), а для запуска на твоей ОС - достаточно посмотреть документацию, но вообще проблем не должно быть.
Если будут вопросы - пиши :)

sultan128 21.12.2009 23:28

lo0
Отписал в ПМ, но ответа не получил, поэтому спрошу здесь, если кто-нибудь может - ответьте, пж, на следущюие вопросы: данный скрипт будет работать, насколько я понимаю, с компа? Как регулировать кол-во запросов?
Когда нажимаю кнопку "отправить" на сайте с формой (предварительно заполнив все необходимые поля), меня перекидывает на страницу (допустим, www.DOMAIN.com/good) с надписью "ваша заявка принята", после чего происходит редирект на первоначальную страницу с формой, ввиду этих данных, как нужно изменить строку result в коде?

lo0 22.12.2009 00:11

Да, этот скрипт можно запускать с любой машине, лишь бы был доступ к www.DOMAIN.com
Один раз запустил скрипт - один запрос выполнися, можно добавить в планировщик задач (cron for unix like)
После запуска скипрта, переменная result будет содеражть ответ от сервера, т.е. если все ок, то result == '<html><body>ваша заявка принята</body></html>', или что-то в этом духе, но на ридерект никакой реакции не будет. Можешь в скипрт добавить еще одну строчку: print result и можно посмотреть на результат

sultan128 22.12.2009 01:47

lo0
Спасибо! Посмотри в ПМ.

lo0 22.12.2009 12:45

Цитата:

Сообщение от sultan128
Как сделать, чтобы ответ сервера записывался в файл и скрипт выполнялся бесконечно

Начнем с "бесконечно" или while True
Если добавить данный блок, то скрипт у тя будет работать до тех пор, пока ручками не остановишь (kill pid) + очень быстро будет обрабатываться. Поэтому добавим еще таймер.
Комментарий к блоку для "записи в файл" укажу в исходнике.
Код:

import urllib2, urllib, time
from random import randrange

urllib2.install_opener(urllib2.build_opener())
params = {'name':'Свое значение',
          'title':'Свое значение',
          'city':'Свое значение',
          'phone':'Свое значение',
          'email':'Свое значение',
          'question':'Свое значение',
          'answer':'Свое значение',
          'source':'Свое значение'}
while True:
    pause = randrange(1,10) # К перем. pause будет присвоено значение от 1 до 10
    filehandle = open('result.txt', 'a')
    result = urllib2.urlopen('www.DOMAIN.com/cgi-bin/faq.cgi',urllib.urlencode(params)).read()
    filehandle.write(result) #Пишим результат в фалй result.txt
    time.sleep(pause * 60) # На сколько нужно сделать паузу (остановить вып. скрипта) в секундах
    filehandle.close ()

Все ответы/результаты будут записаны в файл result.txt в том каталоге, где и скрипт лежит.
Таймер будет останавливать скрипт "от 1 до 10" мин, т.к. * 60, но здесь можно установить любое свое значение.


Время: 09:19