Обход noGraffiti на vkontakte.ru

Сегодня я расскажу тебе один способ, как все-таки загрузить граффити на страницу ВКонтакте. Ведь не секрет, что с выходом FlashPlayer 10, пустая страница с наднисью noGraffiti стала знакома многим линуксоидам-пользователям ВКонтакте... Итак, наметим план действий: мы нарисуем картинку в графическом редакторе, загрузим ее с помощью Python-скрипта и подтвердим в браузере.

Начнем. Создаем новый рисунок:

  • Тип изображения: png (Формат изображений PNG)
  • Ширина: 586 пикселов
  • Высота: 293 пиксела

Я для этих целей использую GIMP, ты же можешь использовать свой любимый графический редактор. Рисуем на нем свое граффити, сохраняем. Предположим, что мы сохранили его с именем graffiti.png в папку ~/uploader.

В эту же папку сохрани наш скрипт, например, под именем guploader.py.

#!/usr/bin/python

import hashlib
import base64
import pycurl
import os
from StringIO import *

#Based on http://showmecode.com/code/675/ by mayhem
#Translated into class by Ulltor (ulltor@gmail.com)

class GUploader:
    def __init__(self, userID, myID, myEMail, myPassword, myRemixId, graffitiFile):
        self.userID = userID
        self.myID = myID
        self.myEMail = myEMail
        self.myPassword = hashlib.md5(myPassword).hexdigest()
        self.myRemixId = myRemixId
        self.graffitiFile = os.path.abspath(graffitiFile);
        self.curl = pycurl.Curl()
        self.st = StringIO()

    def __del__(self):
        self.curl.close()

    def pngsigMD5(self):
        pngsize = os.path.getsize(self.graffitiFile)
        pngcontent = open(self.graffitiFile, 'rb').read(pngsize)
        pngsigB64 = base64.b64encode(pngcontent)[0:1024]
        return hashlib.md5(pngsigB64).hexdigest()

    def makeCookie(self):
        return 'remixlang=0; remixchk=5; remixautobookmark=14; remixmid=' + self.myID + '; remixemail=' + self.myEMail + '; remixpass=' + self.myPassword + '; remixsid=' + self.myRemixId + ';'

    def config(self):
        def setoptArray(curlObj, optArray):
            for optName, optValue in optArray.iteritems():
                opt = getattr(pycurl, optName)
                curlObj.setopt(opt, optValue)
        options = {
        "URL" : 'http://vkontakte.ru/graffiti.php?to_id=' + self.userID + '&group;_id=0',
        "WRITEFUNCTION" : self.st.write, 
        "HTTPPOST" : [
            ('Signature', self.pngsigMD5()),
            ('Filedata', (pycurl.FORM_FILE, self.graffitiFile)),
            ('Upload','Submit Query')
        ],
        "REFERER" : 'http://vkontakte.ru/swf/Graffiti.swf?15',
        "USERAGENT" : 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729) FirePHP/0.2.4',
        "COOKIE" : self.makeCookie(),
        "HTTPHEADER" : [
            'Host: vkontakte.ru',
            'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'Accept-Language: ru,en-us;q=0.7,en;q=0.3',
            'Accept-Encoding: gzip,deflate',
            'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7',
            'Keep-Alive: 300',
            'Connection: keep-alive',  
        ],
        }
        setoptArray(self.curl, options)

    def execute(self):
        self.curl.perform()

    def GetValue(self):
        return self.st.getvalue()

#Imperative part begining

upl = GUploader(
    'ID юзера, на стену которого вешается картинка', 
    'мой ID', 
    'мой e-mail в формате username%40example.com', 
    'мой пароль',
    'мой RemixId', 
    'graffiti.png')

upl.config()
upl.execute()

Не забудь заменить нужные строки валидную информацию. Подсказка: чтобы узнать свой RemixId, нужно на своей странице ВКонтакте набрать в адресной строке:

javascript:document.write(document.cookie);

Там найдешь всю информацию.

Сделай скрипт исполняемым:

$chmod +x guploader.py

Теперь устави нужные пакеты (на примере *buntu):

$sudo apt-get install python-pycurl

PyCurl утянет за собой Python и libcurl.

Самое время питону приняться за работу:

$./guploader.py

Как только ты снова увидишь приглашение терминала, переходи по ссылке http://vkontakte.ru/graffiti.php?act=last. Любуйся результатом :)

Размещено: 18.06.2009 22:39 Всего комментариев: 1
Автор: ulltor Блог: ulltor's blog
Тэги: graffiti , nograffiti , uploader , vkontakte , vkontakte graffiti nograffiti uploader

Комментарии:

  • Автор: amigo Размещено: 11.08.2011 08:55
    Отлично. Будем пробовать.

Пожалуйста войдите или зарегистрируйтесь чтобы оставлять комментарии.