Обход 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. Любуйся результатом :)

Комментарии

У кого-то получилось загрузить хоть один граффити?

сабж

сабж, или не сабж но мне

сабж, или не сабж но мне помогло

способы проще

http://leolik.blogspot.com/2009/06/adobe-flash-plugin-v10-vkontakteru.html

способ с GreaseMonkey с прошлой недели работать перестал, но утилита работает, как надо. и даже позволяет загружать картинки на стену не меняя пропорций - так, что они отображаются целиком.

Тут есть другое решение

Ребята что то не работает((

Ребята что то не работает(( Есть еще какие ни будь действенные способы?

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".