Всея ПЫХА epsyl adw0rd Мавр ГО Irinax http://hell.helldude.ru - это пиздец

DudeCurl update.

Рубрики: (phpdude Curl) Автор: phpdude 15 Июн 2009

Теги : ,

http://clear.helldude.ru/2009/06/15/%D0%BD%D0%B5%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%BE%D0%B9-%D1%84%D0%B8%D0%BA%D1%81-dudecurl/

curl + form. мастеркласс 2! Регистрация на АОЛ’е.

Рубрики: (phpdude Curl, Каптча коды, Полезные штуки) Автор: phpdude 27 Мар 2009

Теги : , , ,

добрый. надеюсь мой друг инсест непротив такой публикации ))

смотрим … нам понадобилось несколько штучек аккаунтов на аоле :) руками? нунах.

https://helldude.ru/inner/code/46uDEo тут код index.php

https://helldude.ru/inner/code/CM6ocJ тут captcha.php соответственно.

все делалось на быструю руку такчто интерфейс тут не к чему :) Читать полностью »

curl. парсим сайты защищенные авторизацией. мастеркласс :)

Рубрики: (phpdude Curl) Автор: phpdude 25 Мар 2009

Теги :

добрый

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

ладно к делу.

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

а вот парсинг данных это уже интересно, и как не странно сайт был закрыт авторизацией :)

код.

<?php
require_once ‘init.php’;

ну эту часть пропустим :)
if(!$_SESSION['curl'] || time() > $_SESSION['curluntil'])
{
$curl = new Curl();
$post = array(«justloggedin»=>1,«login»=>SITELOGIN,«password»=>SITEPASS);

$curl->init(«http://www.horseracebase.com/horsebase1.php»)->serverfriendly()->setopt(«post»,$post)->exec();

$_SESSION['curl'] = $curl;
$_SESSION['curluntil'] = time() + AUTHCACHE;
}

а вот это уже интересно: подготавливаем объект курл для последующей работы с ним.

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

if(!$_POST)
{
echo «<form method=’post’>»;

echo «<select name=’day’>»;
for($i=1;$i<=31;$i++)
{
echo «<option value=’$i’>$i</option>»;
}
echo «</select>»;

echo «<select name=’month’>»;
for($i=1;$i<=12;$i++)
{
$date = date(«M»,mktime(0,0,0,$i,1,2009));
echo «<option value=’$i’>$date</option>»;
}
echo «</select>»;

echo «<select name=’year’>»;
for($i=2009;$i>=1997;$i—)
{
echo «<option value=’$i’>$i</option>»;
}
echo «</select>»;

echo «&nbsp;&nbsp;&nbsp;&nbsp;<input type=’submit’ value=’get list’ />»;

echo «</form>»;
}
elseif(!$_POST['id'])
{
$curl = $_SESSION['curl'];

$content = $curl->init(«http://www.horseracebase.com/tracerace.php»)->serverfriendly()->setopt(«post»,$_POST)->exec();
preg_match_all(«#<a href=’races.php\\?id=(\\d+)’ target=’_blank’>(.*?)</a>#ism»,$content,$races);

$races = (array)@array_combine($races[1],$races[2]);

echo «<form method=’post’>»;
foreach($races as $id=>$title)
{
echo «<label><input type=’checkbox’ name=’id[$id]‘ value=’$title’> $title</label><br/>»;
}
foreach($_POST as $i=>$v)
{
echo «<input type=’hidden’ name=’$i’ value=’$v’/>»;
}
echo «<input type=’submit’ value=’get it’ /> <input type=’submit’ value=’get all them!’ onclick=’aa = document.getElementsByTagName(\»input\»);for(a in aa) { b= aa[a]; b.checked=true;}’/></form>»;
}
else
{
$curl = $_SESSION['curl'];
$items = array();

foreach((array)$_POST['id'] as $id=>$title)
{
$content = $curl->init(«http://www.horseracebase.com/races.php?id=$id»)->serverfriendly()->exec();

preg_match(«#<td class=’class=databreakdown16′>(.*?)</td>#ism»,$content,$info);
preg_match_all(«#<span class=’texttype1′>(.*?):&nbsp</span><span class=’texttype2′>(.*?)</span>#ism»,$info[1],$info);

$info = array_combine($info[1],$info[2]);

preg_match_all(«#</table>\\s+<table width=’1024′ align=’center’>(.*?)</table>#ism»,$content,$data);

preg_match_all(«#<tr><td.*?>(.*?)</td>\\s*<td.*?>(.*?)</td>\\s*<td.*?>(.*?)</td>\\s*<td.*?>(.*?)</td>\\s*<td.*?>(.*?)</td>\\s*<td.*?>(.*?)</td>\\s*<td.*?>(.*?)</td>\\s*<td.*?>(.*?)</td>\\s*<td.*?>(.*?)</td>\\s*<td.*?>(.*?)</td>#ism»,$data[1][1],$data,PREG_SET_ORDER);

$items[$id] = array(«info»=>$info,«data»=>$data,«title»=>$title);
}
require_once dirname(__FILE__).‘/libs/Spreadsheet/Excel/Writer.php’;

$date = $_POST['day'].«-».$_POST['month'].«-».$_POST['year'];
$file = dirname(__FILE__).«/tmp/horseracebase $date.xls»;

$xls = new Spreadsheet_Excel_Writer($file);
$xls->setVersion(8);

$f1 = $xls->addFormat(array(«bold»=>true));
$f2 = $xls->addFormat(array(«bold»=>true,«color»=>«white»,«bgcolor»=>«black»,«align»=>«center»));

//    $xls->send(«horseracebase $date.xls»);

$i=0;
$sheet = $xls->addWorksheet(«races»);
foreach($items as $id=>$item)
{
foreach($item['info'] as $k=>$v)
{
$sheet->writeString($i,0,«$k»,$f1);
$sheet->writeString($i,1,«$v»);
$sheet->mergeCells($i,1,$i,10);
$i++;
}
$i++;

$sheet->writeString($i,1,«Place»,$f2);
$sheet->writeString($i,2,«Dist Bt»,$f2);
$sheet->writeString($i,3,«Stall»,$f2);
$sheet->writeString($i,4,«Horse»,$f2);
$sheet->writeString($i,5,«Age»,$f2);
$sheet->writeString($i,6,«Weight»,$f2);
$sheet->writeString($i,7,«OR»,$f2);
$sheet->writeString($i,8,«Trainer»,$f2);
$sheet->writeString($i,9,«Odds»,$f2);
$sheet->writeString($i,10,«Jockey (Claim)»,$f2);
$i++;

foreach($item['data'] as $v)
{
$sheet->writeString($i,1,$v[1]);
$sheet->writeString($i,2,$v[2]);
$sheet->writeString($i,3,$v[3]);
preg_match(«#href=’(.*?)’.*?>(.*?)<#ism»,$v[4],$url);
$sheet->writeUrl($i,4,«http://www.horseracebase.com/».$url[1],$url[2]);
$sheet->writeString($i,5,$v[5]);
$sheet->writeString($i,6,$v[6]);
$sheet->writeString($i,7,$v[7]);
preg_match(«#href=’(.*?)’.*?>(.*?)<#ism»,$v[8],$url);
$sheet->writeUrl($i,8,«http://www.horseracebase.com/».$url[1],$url[2]);
$sheet->writeString($i,9,$v[9]);
preg_match(«#href=’(.*?)’.*?>(.*?)<#ism»,$v[10],$url);
$sheet->writeUrl($i,10,«http://www.horseracebase.com/».$url[1],$url[2]);
$i++;
}
$i += 5;
}

$sheet->setColumn(0,0,15);
$sheet->setColumn(4,4,25);
$sheet->setColumn(8,8,25);
$sheet->setColumn(10,10,30);
$xls->close();

header(«Location: tmp/horseracebase $date.xls?».rand(0,10000000));
}

вот только нужен ли он кому то. ладно, удачи :)

кстати ссылочка http://phpdude.ru/code/0ugPon может кому там поудобнее смотреть

кстати до кучи вот рабочая версия http://phpdude.ru/matt/horseracebase/ если кому интересно

Парсинг! Закрытые авторизацией сайты. vkontakte.ru … как много дыр я слышу в этом слове ..

Рубрики: (phpdude Curl, Парсинг, Регулярные выражения) Автор: phpdude 12 Янв 2009

Теги : , , , , , , ,

вечер добрый. поперло писать записки в этот угоблог.

такс, я так понимаю что если есть нюбы, которые меня читают/читали/слушали/неслушали/ненавидели и все еще ненеавидят, то это может быть им очень полезным :)

поехали. Читать полностью »

phpdude Curl v0.1.1 beta

Рубрики: (phpdude Curl) Автор: phpdude 12 Янв 2009

Теги : , , , ,

думаю что вы уже знакомы с ним, если нет, то можете поискать по тегу :)

обновленный код вы можете просмотреть/скачать тут http://phpdude.ru/code/I9cxZl

фикс — удалена зависимость от моего стороннего класса в функции serverfriendly().

прошу любить и жаловать меня :)

phpdude Curl beta 0.1! Класс для работы с Curl! Он просто великолепен!

Рубрики: (phpdude Curl) Автор: phpdude 27 Дек 2008

Теги : , , , , , ,

парсинг парсинг парсинг … как много в этом слове :)

выкладываю свою последнюю разработку — класс для работы с курлом :)

ОН УДОБЕН!

исходный код тут.

http://phpdude.ru/code/IE7o1m

можете ругать, что ОН БОЛЬШОЙ, что он негибкий, что сокеты ахуенны, но мне похуй. я его наконец то написал и это хорошо, ибо хотел написать пару лет оный)

по теме. достоинства:

  • поддерживает http cookie сам. понимает domain, path параметры :)
  • короткая настройка ресурса curl. откажись от curl_setopt сейчас!
  • лаконичный код.
  • методы в большинстве своем возвращают сам объект — множественная настройка посредствам множественных вызовов методов.
  • внутрення переменная содержащая информацию о ответе сервера public $curlinfo;
  • автоматическая обработка заголовков ответа сервера и дальнейшая работа с ними. легкий доступ к заголовкам. $location = $curl->header(«location»);

думаю что еще много плюсов. я просто покажу пример кода для того, чтобы вы все поняли :)

$data = array_merge($this->_session['formdata'],$data);
$curl = $this->_session['register_curl'];

$curl->init($curl->curlinfo->url,$this->curl_options());
$curl->setopt(«post»,$data)->exec();

не правда ли удобно? :)

дальнейшие планы — поставить sunversion server + wiki по расшареным мною вещам. есть люди которые заинтересованы в подобных вещах ? если это никому не надо, я не стану терять время :) ведь у меня его и так не сильно много.

О САЙТЕ

Крик души может быть будет на этом сайте, а может и будет что-нибудь другое :)



Яндекс.Метрика