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

Discussion in 'PHP' started by sxiii, 14 Feb 2010.

  1. sxiii

    sxiii New Member

    Joined:
    23 Jul 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Эксмо создало конкурс, вот по этой ссылке профиль моей знакомой в этом конкурсе:

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

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

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

    Code:
    																<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':'3c702ffdc5465a0d6a9e2199c392631e',
    'PAGE_PARAMS':
    {'ELEMENT_ID':'286445'
    },
    'sessid':'7ff150086454d52a33bb8c52e00f92ec',
    'AJAX_CALL':'Y'
    })"></div></td> 
    
    Похоже нужно копать в эту сторону? Как бы проще сделать? Юзаю Russian Fedora 12 x86_64

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

    kof New Member

    Joined:
    1 Jul 2006
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Ну если я правильно подставил все параметры, то при открытии страницы добавляй в конец скриптом этот код яваскрипта, заменяя строки:
    "{'SESSION_PARAMS':'111111111111111111111111111111111',"
    "'sessid':'222222222222222222222222222222222',"
    строчками из загруженного документа регулярным выражением или проверками.

    Code:
    <script type="text/javascript">
    
    voteScript.do_vote('vote_286445_4','vote_286445',
    {'SESSION_PARAMS':'111111111111111111111111111111111',
    'PAGE_PARAMS':
    {'ELEMENT_ID':'286445'
    },
    'sessid':'222222222222222222222222222222222',
    'AJAX_CALL':'Y'
    });
    
    voteScript.do_vote('vote_286431_4','vote_286431',
    {'SESSION_PARAMS':'111111111111111111111111111111111',
    'PAGE_PARAMS':
    {'ELEMENT_ID':'286431'
    },
    'sessid':'222222222222222222222222222222222',
    'AJAX_CALL':'Y'
    });
    
    voteScript.do_vote('vote_286427_4','vote_286427',
    {'SESSION_PARAMS':'111111111111111111111111111111111',
    'PAGE_PARAMS':
    {'ELEMENT_ID':'286427'
    },
    'sessid':'222222222222222222222222222222222',
    'AJAX_CALL':'Y'
    });
    
    </script>
    Только пробелы уберите плз между единицами (форум сам поставил пробелы, хз почему).
     
  3. sxiii

    sxiii New Member

    Joined:
    23 Jul 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Нашел вот код:

    Code:
    
    <?
    $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... А это кстати идея. Может проще через шелл-скрипт сделать? :))

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

    sxiii New Member

    Joined:
    23 Jul 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Мои скрипты

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

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

    Code:
    #!/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, или же нужно делать как-то по-другому? Нужно ли чистить кукисы после каждого голосования, или это не обязательно? Если нужно, как почистить их (кукисы оперы например) через шелл-скрипт? Пожалуйста, посоветуйте!

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

    Code:
    #!/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 :)
     
  5. sxiii

    sxiii New Member

    Joined:
    23 Jul 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Топик убежал ( Никто не поможет?...