вторник, 21 июня 2011 г.

Python. Авторизация на сайт Vkontakte.ru или Vk.com без API

Сайт Vkontakte.ru - это одна из самых популярных  соц сетей России.
Большая известность, повлекла за собой программистов. Появилось много программ, для этого сайта. Например клиент-серверы.

Специально для этого Администраторы сайта создали API, через который зарегистрированные приложения могут совершать различные действия, такие как отправка сообщения, просмотр списка друзей и т.д

Но для тех кто не хочет регистрировать, вот скрипт для авторизации:


import urllib
import urllib2
import re
import sys
import math
import os
import time

class Vkontakte:
    def __init__(self, email, password):
        self.email = email
        self.password = password
        self.cookie = None

    def get_s_value(self):        
        #Возвращает уникальный идентификатор, который выдается на домене login.vk.com
        host = 'http://login.vk.com/?act=login'
        post = urllib.urlencode({'email' : self.email,
                                 'expire' : '',
                                 'pass' : self.password,
                                 'vk' : ''})

        headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13 (.NET CLR 3.5.30729)',
                   'Host' : 'login.vk.com',
                   'Referer' : 'http://vkontakte.ru/index.php',
                   'Connection' : 'close',
                   'Pragma' : 'no-cache',
                   'Cache-Control' : 'no-cache',
                  }

        conn = urllib2.Request(host, post, headers)
        data = urllib2.urlopen(conn)
        my_crack = str(data.read())[350:410]        
        return my_crack  

    def get_cookie(self):
        #Возвращает remixsid из куки
        if self.cookie: return self.cookie

        host = 'http://vkontakte.ru/login.php?op=slogin'
        post = urllib.urlencode({'s' : self.get_s_value()})
        headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13',
                   'Host' : 'vkontakte.ru',
                   'Referer' : 'http://login.vk.com/?act=login',
                   'Connection' : 'close',
                   'Cookie' : 'remixchk=5; remixsid=nonenone',
                   'Pragma' : 'no-cache',
                   'Cache-Control' : 'no-cache'
                  }
        conn = urllib2.Request(host, post, headers)
        data = urllib2.urlopen(conn)
        cookie_src = data.info().get('Set-Cookie')
        self.cookie = re.sub(r'(expires=.*?;\s|path=\/;\s|domain=\.vkontakte\.ru(?:,\s)?)', '', cookie_src)        
        return self.cookie
        
    def friends(self):    
        cook = self.get_cookie()
        host = 'http://vkontakte.ru/friends_ajax.php'
        post = urllib.urlencode({'s' : self.get_s_value()})
        headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13','Host' : 'vkontakte.ru','Referer' : 'http://login.vk.com/?act=login','Connection' : 'close','Cookie' : 'remixchk=5; '+cook,'Pragma' : 'no-cache','Cache-Control' : 'no-cache'}        
        conn = urllib2.Request(host, post, headers)
        data = urllib2.urlopen(conn)
        my_fr = str(data.read())
        return my_fr

Пример использования:

vk = Vkontakte(ваш email,ваш пароль)
print vk.get_cookie()

четверг, 31 марта 2011 г.

Python Создание анимированного графика # 23

Для того, чтобы уметь строить анимированный график, необходимо первоначально просто уметь строить график. Это описано в посте ранее.

Для того, чтобы оживить наш график, используется специальная функция библиотеки MayPlotLib - pylab.ion(). Но это не всё.

Технология такова: Используется цикл. Если вы хотите получить фиксированное количество кадров, то используется for, иначе - While. Перед получением нового кадра, мы стираем старый и добавляем новый.

среда, 30 марта 2011 г.

Python Построение графиков #22

Построение графика на язык Python можно сделать при использовании многих библиотек. Над этим вопросом я много поработал и сделал вывод - лучше всего использовать MatPlotLib.

По мнению многих программистов этот продукт работает быстрее всех. Хоть и молодой, но функций больше, чем в остальных. 

На этом сайте (http://sovety.blogspot.com/2007/10/9.html) перечислены все библиотеки по работе с графикой в Python, имеются сравнения.

Вот официальный сайт (http://matplotlib.sourceforge.net/), где имеется полная документация по этой библиотеке с огромным изобилием примеров. Но там всё на английском языке.

Рассмотрим самый простейший пример.
Нарисуем график вида y=f(x) (на данный момент без использования Glade)


воскресенье, 27 марта 2011 г.

Python Glade пример. Калькулятор # 21

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

Для начала создаём проект Glade, заполняем его элементами (кнопки, поля).
Теперь переходим к исходному коду вашего проекта: