PDA

Просмотр полной версии : Надо написать JS для голосования (Битрикс), меняю на скрипт авто-тор-прокси-свичера


sxiii
14.02.2010, 18:45
Эксмо создало конкурс, вот по этой ссылке профиль моей знакомой в этом конкурсе:

http://eksmo.ru/vampireacademy/list/1090/

Уже написал тор-прокси-свичер, запоминающий, с каких айпи уже голосовалось, и переключающий айпи (shell script, работает под Fedora 12 и Ubuntu 10.04 - проверено).

Осталось написать JS-часть, которая будет автоматически сабмитить 5 звездочек за указанное фото. В частности, в исходниках странички заинтересовала следующая часть:

<td><div id="vote_286445_3" class="star-active star-empty" title="4" onmouseover="voteScript.trace_vote(this, true);" onmouseout="voteScript.trace_vote(this, false)" onclick="voteScript.do_vote(this, 'vote_286445',
{'SESSION_PARAMS':'3c702ffdc5465a0d6a9e2199c392631 e',
'PAGE_PARAMS':
{'ELEMENT_ID':'286445'
},
'sessid':'7ff150086454d52a33bb8c52e00f92ec',
'AJAX_CALL':'Y'
})"></div></td>


Похоже нужно копать в эту сторону? Как бы проще сделать? Юзаю Russian Fedora 12 x86_64

Помогите, люди добрые, как бы так накодить автоголосовалку :) Обменяю код автоголосовалки на код автоматического прокси свичера для тора с запоминанием использованных айпи... Удобная штука

kof
14.02.2010, 19:37
Ну если я правильно подставил все параметры, то при открытии страницы добавляй в конец скриптом этот код яваскрипта, заменяя строки:
"{'SESSION_PARAMS':'1111111111111111111111111111111 11',"
"'sessid':'222222222222222222222222222222222',"
строчками из загруженного документа регулярным выражением или проверками.

<script type="text/javascript">

voteScript.do_vote('vote_286445_4','vote_286445',
{'SESSION_PARAMS':'1111111111111111111111111111111 11',
'PAGE_PARAMS':
{'ELEMENT_ID':'286445'
},
'sessid':'222222222222222222222222222222222',
'AJAX_CALL':'Y'
});

voteScript.do_vote('vote_286431_4','vote_286431',
{'SESSION_PARAMS':'1111111111111111111111111111111 11',
'PAGE_PARAMS':
{'ELEMENT_ID':'286431'
},
'sessid':'222222222222222222222222222222222',
'AJAX_CALL':'Y'
});

voteScript.do_vote('vote_286427_4','vote_286427',
{'SESSION_PARAMS':'1111111111111111111111111111111 11',
'PAGE_PARAMS':
{'ELEMENT_ID':'286427'
},
'sessid':'222222222222222222222222222222222',
'AJAX_CALL':'Y'
});

</script>

Только пробелы уберите плз между единицами (форум сам поставил пробелы, хз почему).

sxiii
16.02.2010, 01:55
Нашел вот код:



<?
$html = file_get_contents('http://eksmo.ru/vampireacademy/list/1090/');
#echo $html;
$dom = new domDocument;

/** загружаем html в объект **/
$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;

/** элемент по тэгу **/
$tables = $dom->getElementsByTagName('table');

/** получаем все строки таблицы **/
$rows = $tables->item(0)->getElementsByTagName('tr');

/** цикл по строкам **/
foreach ($rows as $row)
{
/** все ячейки по тэгу **/
$cols = $row->getElementsByTagName('td');
/** выводим значения **/
echo $cols->item(0)->nodeValue.'<br>';
echo $cols->item(1)->nodeValue.'<br>';
echo '<hr>';
}

?>



Он загружает всякий трэш из таблицы... Как бы сдеать чтобы чисто идентификатор сессии подгружался в переменную, например, $phpsession,... В терминале линуксовом я бы просто сделал wget | grep phpsession ID... А это кстати идея. Может проще через шелл-скрипт сделать? :))

Посоветуйте пожалуйста более конкретным куском кода! Спасибо :)

sxiii
16.02.2010, 05:17
Помогите, уже второй день с этим сижу. Выкладываю всё, что у меня есть:

Скрипт автосмены прокси для тора, с функцией запоминания использованных айпи (работает):


#!/bin/bash

# Объясняю что делает скрипт... Функция воут
function vote {
# Включаем запущенный и работающий Proxy (Polipo) для консоли
export http_proxy="http://localhost:8118"
# Меняем IP TOR'а
kill -HUP `pidof tor`
# Спим 3 секунды (возможно ненужно...)
sleep 3
# Загружаем IP в переменную ip с сайта whatismyip.org
ip=`wget -O - -q whatismyip.org --no-cache`
# Ищем в файле ip.txt строчку с только что выданным $ip
test=`cat ip.txt | grep $ip`
# Если такая строчка есть, значит IP уже использовался для голосования, сообщаем
# и перезапускаем функцию vote с начала
if [ "$test" == "$ip" ]; then
echo $ip "was found in the list; getting new IP..."
vote
else
echo $ip "is NEW IP! USE IT NOW! I will add it to used ip list now."
# А если нету, говорим об этом, добавляем новый IP в файлик ip.txt, выключаем proxy для консоли
echo $ip >> ip.txt
unset http_proxy
exit 0
fi
}

# Запускаем функцию воут
vote


Скрипт воута непосредственно, загружает HTML-страницу через прокси, в конец страницы дописывает код голосования. Не сделал автоматический рефреш браузером, т.к. скрипт не работает до конца корректно. Что я делаю неправильно? Как мне отсылать результаты на сервер с использованием локального index.html, вообще, смогу ли я это, нужно ли сохранить все побочные скрипты, которые "тянет" страница index.html, или же нужно делать как-то по-другому? Нужно ли чистить кукисы после каждого голосования, или это не обязательно? Если нужно, как почистить их (кукисы оперы например) через шелл-скрипт? Пожалуйста, посоветуйте!

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


#!/bin/bash
rm index.html
export http_proxy="http://localhost:8118"
v1=286445
v2=286431
v3=286427

session=`wget -O - -q http://eksmo.ru/vampireacademy/list/1090/ --no-cache | grep SESSION_PARAMS | uniq | cut -b 20-51`
sessid=`wget -O - -q http://eksmo.ru/vampireacademy/list/1090/ --no-cache | grep sessid | uniq | cut -b 11-42`

script="<script type=text/javascript>

voteScript.do_vote('vote_"$v1"_4','vote_"$v1"',
{'SESSION_PARAMS':'"$session"',
'PAGE_PARAMS':
{'ELEMENT_ID':'"$v1"'
},
'sessid':'"$sessid"',
'AJAX_CALL':'Y'
});

voteScript.do_vote('vote_"$v2"_4','vote_"$v2"',
{'SESSION_PARAMS':'"$session"',
'PAGE_PARAMS':
{'ELEMENT_ID':'"$v2"'
},
'sessid':'"$sessid"',
'AJAX_CALL':'Y'
});

voteScript.do_vote('vote_"$v3"_4','vote_"$v3"',
{'SESSION_PARAMS':'"$session"',
'PAGE_PARAMS':
{'ELEMENT_ID':'"$v3"'
},
'sessid':'"$sessid"',
'AJAX_CALL':'Y'
});

</script>
"
wget http://eksmo.ru/vampireacademy/list/1090/
echo $script >> index.html
unset http_proxy
# ну и тут потом добавить что-то типа opera ~/index.html, но не работает всё равно скрипт...
exit 0


Мозг разрывается... HEEELP PLZ :)

sxiii
21.02.2010, 19:17
Топик убежал ( Никто не поможет?...