banner

Делаем скриншоты сайтов

Многие не раз задавались вопросом, как получить скриншот сайта в автоматическом режиме.
Сегодня я покажу как с помощью PyQt4.QtWebKit можно сделать скриншот без использования браузеров и непосредственного скриншотинга их .
Данный скрипт на безиксовых unixlike os не проверялся, но думаю особых проблем возникнуть не должно.

Ах да, копипастерам: Повторюсь ещё раз, скрипты я пишу сам, а не откуда то копирую. Поэтому без моего разрешения и копирайтов копировать запрещаю.

#coding:utf-8
#Author: RusheR
#Site: http://klipner.ru
from PyQt4.QtGui import *
from PyQt4.QtCore  import *
from PyQt4.QtWebKit import *
import signal,sys
class Snapshot():
    def __init__(self):
        #  Создаём обьект для рендеринга и закачки web страниц
        self.webpage = QWebPage()
        # Создаём сигнал со слотом для сохранения скриншота
        # Как только загрузка  будет завершена, будет вызван метод save. 
        self.webpage.connect(self.webpage, SIGNAL("loadFinished(bool)"), self.save)
 
    def save(self,result):
        if not result:
            sys.exit()      
        # Получаем размер загруженной странички
        size = self.webpage.mainFrame().contentsSize()
        # Меняем размер виртуального окна просмотра
        self.webpage.setViewportSize(size)
        # Создаём картинку
        image = QImage(self.webpage.viewportSize(), QImage.Format_ARGB32)
        # Виртуальный девайс для рендеринга веб странички
        painter = QPainter(image)
        # Рендерим в виртуальный девайс
        self.webpage.mainFrame().render(painter)     
        painter.end()
        # Сохраняем
        image.save('output.png')
        # Закрываем приложение
        sys.exit()
    def load(self,url):
        self.webpage.mainFrame().load(QUrl(url))
app = QApplication([])
signal.signal(signal.SIGINT, signal.SIG_DFL) 
s = Snapshot()
s.load('http://klipner.ru')
sys.exit(app.exec_())

Бинарные модули для python

Очень полезная ссылка со всеми популярными модулями скомпилированными под windows.
http://www.lfd.uci.edu/~gohlke/pythonlibs/

Установка vpn или поднимаем собственный openvpn

Продолжаю тему около линуксойдных дел.
За последние 2 года накопилось немало опыта работы с linux, решил поделиться со всеми, тем, о чём ещё хоть как то помню, тем более тема с vpn в последнее время актуальна среди вебмастеров :)
Что имеем ? Желание поднять свой vpn, debian based linux, немного времени и нервов :)
Когда я пытался поставить свой vpn, у меня это удалось только с 3-4 попытки и после прочтения несколько статей. Поэтому попытаюсь изложить как можно точнее.
Читать далее...

Mysql: экспорт и импорт бд

Зачастую возникают проблемы с экспортом и импортом больших баз данных через всеми полюбившийся phpmyadmin.
Если у вас есть доступ по ssh, то проблему поможет решить mysqldump.
Создаём бэкап базы данных "bd1" :

mysqldump -u вашлогин -p вашпароль –DATABASES bd1 > dump.SQL

Если трибуется сделать дамп нескольких бд, то просто указываем их через пробел( bd1 bd2).
Создаём бэкап всех баз:

mysqldump -u вашлогин -p вашпароль –DATABASES bd1 > dump.SQL

Восстанавливаем бэкап в bd1:

mysqldump -u вашлогин -p вашпароль bd1 < dump.SQL

Исли возникают проблемы с кодировкой, то указываем её сами:
–default-character-set=utf-8

Блокируем нежелательный трафик

Самый лучший по моему мнению способ блокировки ботов, это блокировка через iptables.
Во первых нет потребности в создании правил для каждого сайта, во вторых нагрузка в разы меньше, в отличии от того же htaccess.
Добавить ip в исключения:

iptables -A INPUT -s 192.168.100.100 -j DROP

Добавить подсеть:

iptables -A INPUT -s 192.168.100.0/24 -j DROP

Читать далее...

Новогодние скидки на R-dorgen

Небольшое предновогоднее перераспределение цен на R-dorgen:
Акция на 2 лицензии - 250$
Акция на 1 лицензию - 150$
Актуально до 31 декабря.