Архив рубрики "Php"

Окт 14

Как получить кол-во FeedBurner подписчиков, зная домен

Рубрики: Php

Сегодня утром именно такой вопрос стоял. Полазил по API фидбернера, ничего не нашел подобного. Дело в том, что на сайте может быть вообще куча разных каналов, а мне нужно узнать количество подписчиков главной новостной ленты сайта, прожженой ч-з фидбернер.

Полазил по рейтингам блогов - там вообще все тупо спрашивают у юзера адрес фида… лол… зачем делать дополнительное действие, раз фид и так получить можно.

Остановился на таком алгоритме:

  1. Скачиваем страницу, например http://www.samborsky.com
  2. Ищем link теги, с атрибутом application/rss+xml
  3. Получаем полный адрес фида, например, если он указан локально /feed/
  4. Заходим на полный адрес фида, получаем таким образом адрес редиректа - http://feeds.feedburner.com/samborsky
  5. Имея на руках полный адрес ленты в фидбернере - получить кол-во подписчиков - дело техники

Привожу кусок класса, кто заметит ошибку, или знает, как сделать лучше пишите.

function feedburner(){

	if( !$this->page_loaded ){
		$this->domain_source();
	}

	if( $this->page_loaded ){

		$feed = '';

		// Найдем RSS фид
		preg_match_all('/<link(.+?)\s*\/?\s*>/i',$this->source_code,$out,PREG_SET_ORDER);
		foreach( $out as $link ){

			$link = strtolower($link[1]);

			if( strpos($link,'application/rss+xml') ){

				// Если адрес взят в двойные кавычки
				if( preg_match('/href="(.+?)"/i',$link,$href) ){
					$feed = $href[1];
					break;
				}

				// Если адрес взят в одинарные кавычки
				if( preg_match("/href='(.+?)'/i",$link,$href) ){
					$feed = $href[1];
					break;
				}

				// Если адрес указан без кавычек
				if( preg_match("/href=\s*(.+)\s*/i",$link,$href) ){
					$feed = $href[1];
					break;
				}
			}
		}

		// Получаем полный адрес фида
		$url = parse_url($feed);
		if( empty($url['host']) ){
			$feed = 'http://' . $this->domain . $feed;
		}

		// Скачиваем фид, получаем реальный адрес
		if( $this->get($feed) ){

			// Получаем последний урл, на который редиректили
			$feed = $this->get_info(CURLINFO_EFFECTIVE_URL);

			if( !empty($feed) ){

				// Нужно получить название канала
				if( preg_match('/feedburner.com\/(.+?)$/i',$feed,$out) ){

					$feed = $out[1];

					// Делаем запрос на фидбернер
					if( $this->https_get('https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=' . $feed) ){

						echo $this->data;
						if( preg_match('/circulation="(\d+?)"/',$this->data,$match) ){

							return $match[1];
						}
					}
				}
			}
		}
	}

	return 'n/a';
}

——— Читать далее »

Сен 1

s_http: Получаем курсы валют с ЦБ России

Рубрики: Php

Нужно было с сайта центрального банка России парсить курсы валют. Задачу решил минут за 15-20, основное время ушло на формирование регулярки, которая тянет цифры. Всю работу c Curl делает за меня мой класс s_http.

Исходник:
Читать далее »

Авг 30

Класс-обертка для curl — s_http

Рубрики: Php

Было время, когда я пытался написать серию статей о библиотеке curl: раз, два, три, но бросил эту затею, не потому, что статьи были бесполезные, и их никто не читал, а потому, что сам я уже не пользуюсь функциями curl в чистом виде. А писать статьи о том, чем сам не пользуешся - бред.

Год назад я написал класс s_http (сокр. samborsky_http), который облегчил мою программистскую жизнь. Именно об этом классе я хотел бы поговорить. Создан он как раз на основе curl, а пользоваться им гораздо проще, чем работать с чистым curl api. Главное - для большинства задач он подходит.

Особенности:

  • Класс старается получить от сервера сжатые средствами gzip,deflate данные, если конечно сервер такое может. Нужно для экономии трафика.
  • Если класс в момент скачивания страницы получает 302 редирект, он переходит по нему.
  • По умолчанию User-Agent файрфоксовский, но вы можете сами его установить.
  • Все кукисы, полученные от вебсервера запоминаются. Очень удобно, если нужно парсить из-под логина.
  • Если пользователем изначально не задан Referer, то класс ставит в это поле предыдущую скачанную страницу, как это делают браузеры.

Подключение класса, инициализация.

Для последующих примеров, я этот код не пишу. Но важно понимать, что он обязателен.

		// Подключаем файл с классом
		include('s_http.php');

		// Создали класс
		$http = new s_http();

		// Инициализируем
		$http->init();

Пример I. Скачиваем главную страницу Яндекса.

Самый распространенный код. Просто скачиваем страницу.

		if( $http->get('http://www.yandex.ru/') ){

			// Все ок, выводим скачанную информацию
			echo $http->data();
		}
		else{

			// Покажем последнюю ошибку
			echo $http->error();
		}

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

Апр 17

Уроки PHP: «CURL, базовые примеры I»

Рубрики: Php Метки: ,

Предыдущий мой урок был достаточно не прост, в связи с этим я решил показать как делать базовые вещи с помощью библиотеки curl. Комментировать буду каждую значимую строку, но если будут вопросы - пишите в комментариях.

Как скачать страницу, зная ссылку?

<?php

	// Создаем подключение
	if( $curl = curl_init() ){

		// Задаем ссылку
		curl_setopt($curl,CURLOPT_URL,'http://www.samborsky.com');
		// Скачанные данные не выводить поток
		curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);

		// Скачиваем
		$out = curl_exec($curl);

		// Показываем скачанные данные
		echo $out;

		// Закрываем соединение
		curl_close($curl);
	}

?>

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

Апр 9

Уроки по PHP: «CURL, делаем автоматический постер в BobrDobr.ru»

Рубрики: Php Метки: , ,

Все знают, что социальные закладки превратились в линкопомойки, уже написано более десятка автоматических постеров, которые засирают базу соц. закладок ссылками на ГС и ГБ. Напишем и мы еще один ;)

Цель: Используя функции библиотеки CURL сделать искусственный HTTP POST запрос, авторизироваться, сохранить соц. закладку, и в целом показать как обычно делаются автоматические постеры.

bobrДа, у бобрдобра есть API для постинга закладок, но я усложню себе задачу, и с имитирую заход из браузера, введу программно логин и пароль, заполню поля для сохранения закладки.

Сперва нужно посмотреть, как соц. закладка добавляется вручную, и проследить за этим процессом Http сниффером (я использую плагин для FIrefox - HttpFox), а затем воспроизвести программно.

1. Набираем в браузере адрес http://bobrdobr.ru/

2. Вводим логин и пароль, смотрим сниффер. Видим главное:

  1. Отправлять POST запрос нужно на адрес http://bobrdobr.ru/login/
  2. POST данные выглядят следующим образом:

    username=%ЛОГИН%&password=%ПАРОЛЬ%&remember_user=on&next=%2F

  3. При успешном входе сервис пересылает нас ч-з 302-редиррект на главную страницу.

login Читать далее »

Апр 8

Уроки по PHP: «CURL, введение»

Рубрики: Php Метки: ,

Этой статьей начинаю свою серию лекций по программированию на PHP. Меня не раз просили в комментариях написать с чего начать, и вот я наконец решился.

Единственное: статьи мои будут рассчитаны не для начинающих программистов, а на тех кто уже знает основы PHP. Основы PHP мне не интересно рассказывать, хотя бы потому, что у PHP есть онлайн справка, в том числе на русском, и она хорошо структурирована. В общем начав читать официальную справку, можно со временем освоить PHP на хорошем уровне. Лично я учился именно по этой справке, но когда я изучал PHP, описание функций было в основном на английском, так что сейчас гораздо проще изучить этот язык программирования.

CURLС вступлением я почти закончил. Почему я начал именно с описания функций CURL ? Наверное потому, что это одна из моих любимых библиотек, ее я знаю отлично и писал десятки приложений, используя функции CURL различной сложности.

Т.к. статьи не для новичков, я пропускаю установку этого модуля к PHP (вы без труда найдете в инете, как установить ее на денвер) и перехожу к примерному списку лекций по этой библиотеке. Да, лекций по CURL будет несколько, в одну я явно не вложусь. К каждой будет прилагаться практический пример, актуальный для нашего времени.

К примеру как вам такие лекции:

  • Работа с HTTPS. Для примера покажу как получить строку “Прибыль за сегодня” в Адсенсе
  • Автоматический постинг, я покажу как создать робота, который постит закладку скажем в Бобрдобр
  • Имитация браузера пользователя при парсинге гугла, к примеру я подделаю http заголовки так, что их будет тяжело  отличить от Firefox-овских

Ну и еще чего нибудь придумаю по настроению, думаю будет интересно.

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

марта 16

Скрипт для поиска <noindex> и списка ссылок

Рубрики: Php Метки: ,

В одном проекте, который мне поручили, нужно было проверять обратную ссылку и смотреть, чтобы ее не взяли в <noindex>-тег. Чтобы потестировать различные варианты и ситуации на разных сайтах, я создал скрипт с интерфейсом. Этот скрипт показал проблемы моей функции, которые я постепенно устранил. Поделюсь сперва своим алгоритмом, который проверяет находится ли ваша ссылка в теге <noindex>, или она доступна к индексации яндексом.

  1. Скачиваю страницу, определяю тип кодировки, если отличная от UTF-8, конвертирую ее в эту кодировку.
  2. С помощью жадного регулярного выражения /<noindex>(\s*.*?\s*)<\/noindex>/i я получаю все вхождения.
  3. Каждое вхождение проверяю специальной функцией, в которой так же вызывается регулярное выражение, которое получает ссылку.

Получился интересный скрипт, который может оказаться кому-либо полезным. Во первых он показывает содержимое тега <noindex>, красным отмечает, если ваш домен взят в этот тег. А во вторых он показывает список всех ссылок, которые нашел на странице. Читать далее »

Фев 26

Скрипт проверки наличия сайтов в DMOZ каталоге

Рубрики: Php Метки: , , ,

Написал этот скрипт уже давненько, но все никак не выложу. Точней я давно написал функцию проверки сайта в DMOZ каталоге, а обертку только сейчас сделал. Функция была частью проекта, который развалился так и не начавшись.

Что за проект? Кому интересно расскажу: заказали мне полный аналог i.pr-cy.ru, т.е. той панельки, которая многим не дает покоя (стабильно мне предлагают ее написать, но больше 300$ никто не дает), мне этот проект вполне по зубам (даже лучше могу сделать), все функции в отдельности написаны, осталось только собрать все в одном проекте, сделать аккаунты пользователей, поставить лимиты на проверки и т.д. Но неожиданно заказчик решил отказаться от моих услуг. В общем хозяин-барин, жаль что предоплату не взял сразу. Кстати кому нужна такая панелька, радующая множество веб-мастеров, пишите, с удовольствием доделаю тот проект, который оцениваю в 300-500$ (в зависимости от подробностей).

Как работает скрипт?

Он берет домен, подставляет его в качестве параметра для поиска в DMOZ, к примеру:

http://search.dmoz.org/cgi-bin/search?search=samborsky.com

После чего парсит результаты поиска, и возвращает количество совпадений. Для моего блога результат 1, для yandex.ru - 53, для сайта не в dmoz.org - 0. По моему так повеселей, чем показывают все чекеры в той же сапе или в j2j (Да/Нет).

Важное замечание

Как всегда сайты с www. и без него - это разные вещи. Потому если вашего сайта нет в DMOZ, в то время, как вы уверены что он там есть - проверьте, правильно ли задали имя домена. Читать далее »

Ноя 27

Выполнен заказ от plasticfantastic.ru

Рубрики: Php, Wordpress Метки: , ,

Выполнил заказ сайта www.plasticfantastic.ru, который специализируется на пластической хирургии и косметологии, занимается освещением популярных пластических операций: груди, носа, лица. Их сайт работает на движке WordPress 2.3.2

Техническое задание было примерно следующим:

Расширить функционал сайта на движке вордпресса:

  • Ввести регистрацию новых пользователей.
  • Систему личных блогов с возможностью добавления до и после операционных фотографий.
  • предусмотреть сжатие размеров фотографий, в случае если наши клиенты загружают огромные фото прямо с камеры. Эта обработка должна происходить на сервере, а фото после обработки должно корректно вписываться в сайт.
  • На каждой фотографии нужно написать копирайты нашего сейта.
  • Предусмотреть возможность комментирования блогов.
  • У каждого блоггера должны быть своя админ-панель, в которой он сможет менять текст своих записей, добавлять/удалять фотографии и т.д.
  • Сделать возможность редактировать посты блоггеров, комментарии из админки вордпресса.

Взялся за проект с большим желанием, ведь по сути функционал, который им был нужен у меня был реализован на сайте о рыбалке. Там так же используется wordpress, но версии 2.6, потому копипаста кода не было, ведь многие современные функции вордпресса не доступны в версии 2.3.2, а предлагать клиентам обновится до последнего вордпресса не захотел из-за его прожорливости в плане ресурсов. Поэтому многое пришлось переписать. Читать далее »

Ноя 17

Скрипт «Определение Яндекс.тематики сайта»

Рубрики: Php, jQuery Метки: , , ,

Написал очередной свой скрипт на сео-тему.

В этот раз определяется тулбарная тематика для списка сайтов в ПС Яндекс. Как бонус определяется ТИЦ домена. Напоминаю что скрипт бесплатный, и для его корректной работы у вас должен быть установлен PHP5.

Тем кто привык к Яндекс.XML, регистрация у них для этого скрипта не требуется, т.к. данные берутся из тулбара яши, и вроде бы он не банит за кучу запросов, по крайней мере пока никаких ограничений не было замечено. Определяется все молниеносно.

Где можно применить?

  1. Часто всплывают на форумах топики типа “Домены с ТИЦ бесплатно”. Проверяете список, во первых узнаете реальный ТИЦ, во вторых узнаете тематику, и если она определена, такой сайт легче в дальнейшем прокачать.
  2. Анализ списка своих сайтов.
  3. Анализ конкурентов.

Замечание

Хотелось бы отметить , что в столбце «Тематика» показывается именно тематика сайта по версии яндекса, и это не значит что ваш сайт находится в каталоге яндекса. Теоретически у сайта может быть несколько тематик, в скрипте это предусмотрено, и тематики выведутся списком. Читать далее »