Здравствйте, форумчане. Уже несколько дней пишу на PHP накрутчик просмотров страниц сайта для счетчика liveinternet. Столкнулся с проблемой, что собственно уже все написал, начал тестить, но в статистике ничего не накручивается. Реализовал почти все, прокси, разные user agent`ы, реферет при заходе с определенного IP гугл с ключевой фразой. Единственное, что не реализовал пока - прием куки. Но все равно не накручивает. Подумал, мб стата в li долго отдупляется, скачал LiCheaters, тот моментально все накрутил, т. е. работает. Главная функция на PHP, которая делает обращения к страницам: PHP: function get($url, $proxy = 0, $ref = 0) { $c = curl_init(); curl_setopt($c, CURLOPT_URL, $url); // задаем URL curl_setopt($c, CURLOPT_PROXY, $proxy); // задаем прокси curl_setopt($c, CURLOPT_USERAGENT, generateUseragent()); // задаем юзер агент curl_setopt($c, CURLOPT_COOKIEFILE, realpath($cookie_file)); // задаем файл куки curl_setopt($c, CURLOPT_COOKIEJAR, realpath($cookie_file)); // задаем файл куки if ($ref === 0) curl_setopt($c, CURLOPT_REFERER, generateReferer($url)); // задаем реферера else curl_setopt($c, CURLOPT_REFERER, generateReferer($url, $ref)); // задаем реферера curl_setopt($c, CURLOPT_TIMEOUT, 3); // Перспективная функция таймаута curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); // возврат результата в переменную return curl_exec($c); } Алгоритм и логика работы понятна из скрина: Собственно вопрос к тем, кто знает примерно как работает этот счетчик и почему в моем случае не работает накрутка ? Нужно принимать куки ? Или другая причина ? К сожалению исходников LiCheaters нету и не могу понять, как он успешно работает.
Вот это я и хочу выяснить. По каким урлам счетчика ходить надо ? Почему недостаточно просто загрузить страницу, ведь когда человек заходит на страницу, он же дополнительно еще по разным ссылкам не ходит.
браузер качает страницу, парсит все ссылки, картинки и фреймы и переходит по ним автоматически. А твой скрипт просто скачивает одну страницку и никуда не ходит.
Может быть вполне достаточно. В идеале: разобрать js код счетчика (каким образом генерируется хеш, если такой имеется). Перейти по ссылке с Referer на текущую страницу.
В общем javascript я знаю плохо, но на интуитивном уровне понял. Сам факт зачисления клика происходит при запросе картинки статистики, вот фрагмент кода: Code: document.write("<a href='http://www.liveinternet.ru/click' "+ "target=_blank><img src='[B]//counter.yadro.ru/hit?t44.11;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+ ";"+Math.random()+ "[/B]' alt='' title='LiveInternet' "+ "border='0' width='31' height='31'><\/a>") вот то, что я выделил жирным генерирует ссылку вида: ее, как я понял, и нужно будет сграбить и по ней кликнуть. Если что то отписал не так, поправьте пожалуйста.
Ага, не мог понять, почему та регулярка для парсинга сорца картинки, что вы мне дали не пашет. Решил проверить, что же все таки мне попадает в переменную с исходником. Записал ее в файл, и выяснил, что там не уже сгенерированная ссылка, а js код не обработанный. Т. е. придется самому генерировать все. Тогда в таком случае и без толку обращаться к самому сайту, можно просто ходить по этой ливинетовской ссылке, подделывая значения ?
Эх, что то не хочет никак LI накручиваться, вчера все переписал, что б по ссылкам ливинтернета ходило. В итоге вот как выглядит оригинальная ссылка, которуб генерирует liveinternet: Code: //counter.yadro.ru/hit?t44.11;rhttp%3A//www.google.com.ua/url%3Fsa%3Dt%26rct%3Dj%26q%3Daser%2520aspire%25205738%2520pzg%2520ms2264%2520%25D0%25B8%25D0%25BD%25D1%2581%25D1%2582%25D1%2580%25D1%2583%25D0%25BA%25D1%2586%25D0%25B8%25D1%258F%2520%25D0%25B4%25D0%25BB%25D1%258F%2520%25D0%25BF%25D0%25BE%25D0%25BB%25D1%258C%25D0%25B7%25D0%25BE%25D0%25B2%25D0%25B0%25D1%2582%25D0%25B5%25D0%25BB%25D1%258F%26source%3Dweb%26cd%3D4%26ved%3D0CGwQFjAD%26url%3Dhttp%253A%252F%252Facer-fans.in%252Fforum%252Ftopic_829%252Flast%26ei%3D3xLnT__IOpHysga9wISzAQ%26usg%3DAFQjCNE20HUJjax3UFzFyrPtMV3_f5lmXA%26cad%3Drja;s1024*768*32;uhttp%3A//acer-fans.in/forum/topic_829/last;0.9885696263518184 А вот какой генерируется у меня: Code: //counter.yadro.ru/hit?t44.11;rhttp://www.google.com.ua/url?[COLOR=Blue]sa[/COLOR]=[COLOR=DarkOrange]t[/COLOR]&[COLOR=Blue]rct[/COLOR]=[COLOR=DarkOrange]j[/COLOR]&[COLOR=Blue]q[/COLOR]=[COLOR=DarkOrange]aser%20aspire%205738%20pzg%20ms2264%20%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F%20%D0%B4%D0%BB%D1%8F%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F[/COLOR]&[COLOR=Blue]source[/COLOR]=[COLOR=DarkOrange]web[/COLOR]&[COLOR=Blue]cd[/COLOR]=[COLOR=DarkOrange]4[/COLOR]&[COLOR=Blue]ved[/COLOR]=[COLOR=DarkOrange]0CGwQFjAD[/COLOR]&[COLOR=Blue]url[/COLOR]=[COLOR=DarkOrange]http%3A%2F%2Fdomen.in%2Fforum%2Ftopic_829%2Flast[/COLOR]&[COLOR=Blue]ei[/COLOR]=[COLOR=DarkOrange]3xLnT__IOpHysga9wISzAQ&usg=AFQjCNE20HUJjax3UFzFyrPtMV3_f5lmXA[/COLOR]&[COLOR=Blue]cad[/COLOR]=[COLOR=DarkOrange]rja[/COLOR];s1024*768*32;uhttp://domen.in/forum/topic_829/last;0.9885696263518184 В общем формат одинаковый. Я уже по этим ссылкам и curl`ом ходил, и просто в браузер выводил картинку в теге <img> с такой ссылкой. Все без толку. Ничего не накручивает. Сейчас попробую еще отсниферить запросы.
Ура, ребят, начало накручивать Решил посмотреть заголовки, которые возвращает сервер после обращения. Пример ответа: Code: HTTP/1.0 302 Moved Temporarily Date: Sun, 24 Jun 2012 14:18:13 GMT Server: 0W/0.8c Content-Type: text/html Location: http://counter.yadro.ru/hit?q;t44.11;rhttp%3A//acer-fans.in;s1400*1050*24;uhttp%3A//acer-fans.in/faq/1555-pervyj-obzor-acer-aspire-7750g-2634g64mikk.html%0D%0A;0.9193112938036264 Content-Length: 32 Expires: Fri, 24 Jun 2011 20:00:00 GMT Pragma: no-cache Cache-Control: no-cache P3P: policyref="/w3c/p3p.xml", CP="UNI" Set-Cookie: FTID=1Fvo6b1G-7W_; path=/; expires=Sun, 23 Jun 2013 20:00:00 GMT; domain=.yadro.ru X-Cache: MISS from localhost X-Cache-Lookup: MISS from localhost:3128 Via: 1.0 localhost:3128 (squid/2.7.STABLE7) Connection: close HTTP/1.0 200 OK Date: Sun, 24 Jun 2012 14:18:15 GMT Server: 0W/0.8c Content-Type: image/gif Content-Length: 132 Expires: Fri, 24 Jun 2011 20:00:00 GMT Pragma: no-cache Cache-Control: no-cache P3P: policyref="/w3c/p3p.xml", CP="UNI" Set-Cookie: FTID=1Fvo6d1K-7m_; path=/; expires=Sun, 23 Jun 2013 20:00:00 GMT; domain=.yadro.ru X-Cache: MISS from localhost X-Cache-Lookup: MISS from localhost:3128 Via: 1.0 localhost:3128 (squid/2.7.STABLE7) Connection: close GIF87a�k�����,c�����c �ڋ�ʼ���(��'�4�������h���B�;�;���`��*RN֭��=���t�tҬ՛Ҙ�2�0(�#&�f���������io�﮾��P; Т. е. сначала получаем ответ 302 Moved Temporarily, потом я курл настроил ходить по редиректам и он переходит, о чем свидетельствует второй ответ. В таком случае накручивает успешно. Вот только не могу мпонять почему сначала вылазит 302 Moved Temporarily в 95 % случаев и что это за ответ ? Погуглил, но не понял, как может к моему случаю относится это ?
Сегодня дописал скрипт. И сразу пустил его в бой. Примерно через 20 мин. работы увидел это объявление у себя в статистике: Как они распознают накрутку ? Мне кажется, что по куки. Я их скриптом не принимаю и это наверно не нравится системе. У кого какие идеи ? реально ли вообще обойти эту надпись ?