Помогите новичку написать скрипт для Human!

вопросы и ответы по использованию PHP
nikson
Сообщения: 94
Зарегистрирован: 20 янв 2011, 02:36
Контактная информация:

Помогите новичку написать скрипт для Human!

Сообщение nikson » 23 янв 2011, 03:42

Доброй ночи! Помогите написать скрипт, в php новичек, только недавно начал изучать понемногу. Вот решил написать свой первый скриптик, надеюсь не последний :D, и сразу же возникли вопросы. Надеюсь на вашу помощь, желательно увидеть примеры как это все реализуется.

Пример:

Код: Выделить всё

<?php

$xhe_host ="127.0.0.1:7010";

// The following code is required to properly run XWeb Human Emulator
require("../Templates/xweb_human_emulator.php");

$login = "логин";
$parol = "пароль";
$mail ="почта@yandex.ru";
$url ="http://site.ru";
{
$browser->navigate('http://site.ru');
$browser->wait_for(60,1);

// Вводим логин, почту и урл
$input->set_value_by_name('uname',$login);

$input->set_value_by_name('email',$mail);

$input->set_value_by_name('url',$url);

// Вводим пароль
$input->set_value_by_name('pass',$parol);
$input->set_value_by_name('vpass',$parol);

$checkbox->click_by_name('agree_disc');

// Регистрация
$button->click_by_name('submit');
$browser->wait_for(60,1);

// Подтверждение регистрации
$button->click_by_number('0');
$browser->wait_for(60,1);
}
// Quit
$app->quit();
?>
Пытаюсь сделать авторегистратор по одному движку.

Вопросы:

1. Сначало переходим на страницу регистрации и вводим 'uname', тут проблема в том, что если на странице присутствуе еще поле для авторизации 'uname', то все сбивается, логин вводится не туда куда надо.

2. Ставим галочку подтверждение регистрации $checkbox->click_by_name('agree_disc');, бывает так что кое где она уже стоит и поэтому выходит наоборот галочка снимается и весь процесс регистрации сбивается.

3. Иногда бывает что на странице регистрации присутствует антикапча, как ее лучше прикрутить?

4. Как прописать чтобы после регистрации проити авторизацию и зайти в свой аккаунт и далее записать ссылку на профиль в текстовый файл?

5. Ну и на последок, как реализовать чтобы к примеру есть текстовый файл в нем база урл, берется первый урл, проходит регистрацию ну и как писал выше сохраняет ссылку на профиль в текстовый файл, после чего берет второй урл и т.д.

ilekor
Сообщения: 54
Зарегистрирован: 07 ноя 2010, 20:12

Re: Помогите новичку написать скрипт для Human!

Сообщение ilekor » 23 янв 2011, 19:17

Дайте для начала урл сайта в ЛС, посмотрим, по вашему описанию сложности написать скрипт не составит.

satih
Сообщения: 270
Зарегистрирован: 31 мар 2010, 23:44

Re: Помогите новичку написать скрипт для Human!

Сообщение satih » 24 янв 2011, 03:57

1. $input->remove_attribute_by_name('uname',name);
2. $checkbox->set_checked_by_name('agree_disc', true) ;

Аватара пользователя
Support
Site Admin
Сообщения: 929
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: Помогите новичку написать скрипт для Human!

Сообщение Support » 25 янв 2011, 12:14

3. Нужно делать проверку на наличие антикаптчи. Например, если поле для ввода ответа с каптчи существует, разгадывать. Нет - продолжить. Про if else почитайте )
4. Ну, это в двух словах не объяснить. Зависит от сайта.
5. Через цикл for. К примеру вот так

Код: Выделить всё

$urls = file(urls.txt);
for ($i=0;$i<count($urls);$i++)
{
$browser->navigate($urls[$i]);
$browser->wait_for(60,1);

и так далее
}

nikson
Сообщения: 94
Зарегистрирован: 20 янв 2011, 02:36
Контактная информация:

Re: Помогите новичку написать скрипт для Human!

Сообщение nikson » 25 янв 2011, 13:23

satih писал(а):1. $input->remove_attribute_by_name('uname',name);
Не помогло, все равно вставляет не туда...

Аватара пользователя
Support
Site Admin
Сообщения: 929
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: Помогите новичку написать скрипт для Human!

Сообщение Support » 25 янв 2011, 14:00

В таком случае, можно вставлять не по имени, а по номеру. Кликните правой кнопкой мышки на нужное поле, чтобы выбрать возможные варианты из меню.

nikson
Сообщения: 94
Зарегистрирован: 20 янв 2011, 02:36
Контактная информация:

Re: Помогите новичку написать скрипт для Human!

Сообщение nikson » 25 янв 2011, 14:13

Support писал(а):В таком случае, можно вставлять не по имени, а по номеру. Кликните правой кнопкой мышки на нужное поле, чтобы выбрать возможные варианты из меню.
Если делать по номеру, то к примеру при регистрации следующего урл там уже номер другой.

Аватара пользователя
Support
Site Admin
Сообщения: 929
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: Помогите новичку написать скрипт для Human!

Сообщение Support » 25 янв 2011, 14:59

В таком случае, следует проявить творческую смекалку :) Ознакомиться подробнее с функциями. Дальнейшую помощь смогу оказать в аське, ознакомившись с примером сайта. По симптомам напоминает DLE, но лучше посмотреть вживую.

satih
Сообщения: 270
Зарегистрирован: 31 мар 2010, 23:44

Re: Помогите новичку написать скрипт для Human!

Сообщение satih » 25 янв 2011, 23:02

про творческую смекалку правильно сказано, посмотри страницу с тем input, и все функции которые есть у этого элемента, подумай какую из них лучше применить. сначала кажется что всего много, чуть привыкнешь будешь писать почти в слепую, большинство функций делают похожие вещи, просто определяют этот инпут по разным параметрам, num или name и т.д.
а помочь с твоим случаем только по обрезку кода невозможно, надо смотреть на то что дает каждый сайт и в каком случае

nikson
Сообщения: 94
Зарегистрирован: 20 янв 2011, 02:36
Контактная информация:

Re: Помогите новичку написать скрипт для Human!

Сообщение nikson » 26 янв 2011, 01:13

Всем спасибо за совет! С формой регистрации я разобрался, не знаю правильный этот вариант или нет, но во всяком случае вся форма заполняется. В моей базе, под которую я пытаюсь написать скрипт всего три варианта ввода или "uname", или по номеру, если есть на странице еще и поле авторизации.

Я сделал так:

$input->set_value_by_name('uname',$login);
$input->set_value_by_number('2',$login);
$input->set_value_by_number('1',$login);

Может это делается как-то проще? Правильный такой вариант? Подскажите.

Теперь я дошел до ввода капчи, приведите пожалуйста пример кода для послания ее на сервис antigate.com для распознования, только не по номеру а по имени, так как номер у рисунка везде разный...

nikson
Сообщения: 94
Зарегистрирован: 20 янв 2011, 02:36
Контактная информация:

Re: Помогите новичку написать скрипт для Human!

Сообщение nikson » 26 янв 2011, 01:19

Support писал(а):3. Нужно делать проверку на наличие антикаптчи. Например, если поле для ввода ответа с каптчи существует, разгадывать. Нет - продолжить. Про if else почитайте )
Можете привести пример кода? Это стандартный код для проверки на наличие антикапчи или под каждый движок разный?

satih
Сообщения: 270
Зарегистрирован: 31 мар 2010, 23:44

Re: Помогите новичку написать скрипт для Human!

Сообщение satih » 26 янв 2011, 10:26

Код: Выделить всё

// если есть инпут с name 'captcha_input'
if ($input->is_exist_with_name('captcha_input')) {
	// сохраним картинку с name 'captcha_img_name' в файл captcha.jpg
	$image->save_to_file_by_name('captcha_img_name', __DIR__.'\captcha.jpg');
	// пошлем на разспознавание
	$captcha_text = $anticapcha->recognize(__DIR__.'\captcha.jpg', $apikey, 'http://www.antigate.com',  $is_verbose = true, $rtimeout = 5, $mtimeout = 120, $is_phrase = 0, $is_regsense = 0, $is_numeric = 0, $min_len = 0, $max_len = 0);
	// заполним поле текстом каптчи
	$input->set_value_by_name('captcha_input', $captcha_text);
}
nikson писал(а): Может это делается как-то проще? Правильный такой вариант? Подскажите.
работает да и слава богу :) можно подсчитать сколько таких инпутов есть, и стирать им атрибут name, но это тоже решение, заполнил лишнее поле, и фиг с ним, скрипту же лишнее поле не мешает

Chechen
Сообщения: 5
Зарегистрирован: 21 янв 2011, 15:05

Re: Помогите новичку написать скрипт для Human!

Сообщение Chechen » 26 янв 2011, 21:20

Я знаю что это за движок, но не дле. Заказывал скрипт под этот двиг у одного гуру за 80$, скрипт регит нормально около 80 акков, потом уже начинается лажа, неправильно заполняет поля, там где не нужно активировать акк, идет его активировать и на этом зависает.. Не знаю как поправить скрипт, т.к. он написан совсем по другому, с использованием фасад чтоли, а я в этом нуб, теперь собираюсь своими силами написать...
П.с. а саппорт оказался хороший, коль помогает написать скрипты :)

nikson
Сообщения: 94
Зарегистрирован: 20 янв 2011, 02:36
Контактная информация:

Re: Помогите новичку написать скрипт для Human!

Сообщение nikson » 26 янв 2011, 22:53

nikson писал(а): можно подсчитать сколько таких инпутов есть, и стирать им атрибут name, но это тоже решение, заполнил лишнее поле, и фиг с ним, скрипту же лишнее поле не мешает
Как это будет выглядеть?

nikson
Сообщения: 94
Зарегистрирован: 20 янв 2011, 02:36
Контактная информация:

Re: Помогите новичку написать скрипт для Human!

Сообщение nikson » 26 янв 2011, 22:57

С капчей разобрался, спасибо за помощь! Теперь пойду почитаю про цикл for, надо это все автоматизировать...

Ответить