<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BrianUR &#187; Programación</title>
	<atom:link href="http://www.brianur.info/category/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.brianur.info</link>
	<description></description>
	<lastBuildDate>Wed, 01 Feb 2012 16:50:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Script: Publicar comentario de primero en CuantoCabron.com</title>
		<link>http://www.brianur.info/script-publicar-de-primero-en-cuantocabron-com/</link>
		<comments>http://www.brianur.info/script-publicar-de-primero-en-cuantocabron-com/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 18:34:05 +0000</pubDate>
		<dc:creator>Brian Urban</dc:creator>
				<category><![CDATA[Codiguillos]]></category>
		<category><![CDATA[cuanto cabron]]></category>
		<category><![CDATA[cuantocabron]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://www.brianur.info/?p=1650</guid>
		<description><![CDATA[El siguiente script solo es una prueba de lo que nos permite hacer cURL, para quienes visitan el sitio ¡Cuánto cabrón! sabrán que ser el primero en comentar no tiene relevancia mayor ya que los comentarios aparecen ordenados por votación de los mismos usuarios, aun así es bastante difícil (casi imposible diría yo xD) poder comentar una viñeta [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">El siguiente script solo es una prueba de lo que nos permite hacer <a title="CURL" href="http://www.brianur.info/curl-y-php/" target="_blank">cURL, </a>para quienes visitan el sitio <strong>¡Cuánto cabrón!</strong> sabrán que ser el primero en comentar no tiene relevancia mayor ya que los comentarios aparecen ordenados por votación de los mismos usuarios, aun así es bastante difícil (casi imposible diría yo xD) poder comentar una viñeta de primero y para eso hice este script. Yo probé el script por partes y cada una de ellas funciona, no lo probé en su totalidad para no pasar por troll pero en teoría debería funcionar.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
/* Comentar de primero en CuantoCabron.com
www.BrianUR.info
/*
$ch = curl_init();
$url = &quot;http://www.cuantocabron.com/&quot;;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIE, 'TU_COOKIE');
curl_setopt($ch, CURLOPT_USERAGENT, &quot;Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13&quot;);
$resultado = curl_exec($ch);
$texto1 = explode(&quot;&lt;h2&gt;&lt;a href=\&quot;&quot;, $resultado);
$texto2 = trim($texto1[1]);
$final = explode(&quot;\&quot;&gt;&quot;, $texto2);
//***************************************
if ($final[0] != &quot;http://www.cuantocabron.com/ultimavineta&quot;) {
try {
$ch0 = curl_init();
curl_setopt($ch0, CURLOPT_URL, $final[0]);
curl_setopt($ch0, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch0, CURLOPT_COOKIE, 'TU_COOKIE');
curl_setopt($ch0, CURLOPT_USERAGENT, &quot;Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13&quot;);
$resultado0 = curl_exec($ch0);
$id_story = explode(&quot;id=\&quot;id_story\&quot; value=\&quot;&quot;, $resultado0);
$current_page = explode(&quot;id=\&quot;current_page\&quot; value=\&quot;&quot;, $resultado0);
$id_story1 = trim($id_story[1]);
$current1 = trim($current_page[1]);
$current = explode(&quot;\&quot;/&gt;&quot;, $current1);
$final1 = explode(&quot;\&quot;/&gt;&quot;, $id_story1);
$idfinal = $final1[0];
$currentFinal = $current[0];
//***************************************
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, $final[0]);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_COOKIE, 'TU_COOKIE');
curl_setopt($ch1, CURLOPT_USERAGENT, &quot;Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13&quot;);
curl_setopt($ch1, CURLOPT_POST, true);
curl_setopt($ch1, CURLOPT_POSTFIELDS, &quot;comment=&quot; . urlencode(&quot;Soy el primero :trollface:&quot;) . &quot;&amp;id_story=&quot; . urlencode($idfinal) . &quot;&amp;current_page=&quot; . urlencode($currentFinal) . &quot;&amp;token_form=&quot; . urlencode(&quot;TU_TOKEN&quot;) . &quot;&amp;submit=Enviar+comentario&quot;);
curl_exec($ch1);
} catch (Exception $e) {
echo 'Caught exception: ', $e-&gt;getMessage(), &quot;\n&quot;;
}
echo (&quot;Comentario publicado :trollface:&quot;);
} else {
//echo &quot;&lt;script type=\&quot;text/javascript\&quot;&gt;top.location.href = 'cc.php';&lt;/script&gt;&quot;;
echo &quot;&lt;meta http-equiv=\&quot;Refresh\&quot; content=\&quot;2;url=cc.php\&quot;&gt;&quot;;
}
?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.brianur.info/script-publicar-de-primero-en-cuantocabron-com/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Script: Comprobar quién es el dueño de una foto en Facebook con su URL</title>
		<link>http://www.brianur.info/comprobar-quien-es-el-dueno-de-una-foto-en-facebook-con-su-url/</link>
		<comments>http://www.brianur.info/comprobar-quien-es-el-dueno-de-una-foto-en-facebook-con-su-url/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 17:19:21 +0000</pubDate>
		<dc:creator>Brian Urban</dc:creator>
				<category><![CDATA[Codiguillos]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://www.brianur.info/?p=1640</guid>
		<description><![CDATA[Un script simple que hice ayer para comprobar quién es el dueño de una foto, en el caso de cuando por ejemplo nos envían la URL de la imagen de tipo http://a5.sphotos.ak.fbcdn.net/hphotos-ak-ash2/24487_1401168904232_1082605132_31212964_123957_n.jpg]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Un script simple que hice ayer para comprobar quién es el dueño de una foto, en el caso de cuando por ejemplo nos envían la URL de la imagen de tipo <a href="http://a5.sphotos.ak.fbcdn.net/hphotos-ak-ash2/24487_1401168904232_1082605132_31212964_123957_n.jpg">http://a5.sphotos.ak.fbcdn.net/hphotos-ak-ash2/24487_1401168904232_1082605132_31212964_123957_n.jpg</a></p>
<pre class="brush: xml; title: ; notranslate">

&lt;form method=&quot;GET&quot;&gt;
&lt;input type=&quot;text&quot; name=&quot;url&quot;/&gt;
&lt;input type=&quot;submit&quot; id=&quot;Enviar&quot; value=&quot;Comprobar&quot;/&gt;
&lt;/form&gt;
&lt;?php
/*
Comprobar quién es el dueño de una foto en Facebook con su URL
www.BrianUR.info
*/
if (isset($_GET['url'])) {
$url = $_GET['url'];
$id = explode(&quot;_&quot;, $url);
$datos = file_get_contents(&quot;http://graph.facebook.com/&quot; . $id[2]);
$daticos = json_decode($datos);
if (isset($daticos-&gt;link)) {
echo &quot;La foto es de &lt;a href='&quot; . $daticos-&gt;link . &quot;'&gt;&quot;
. $daticos-&gt;name . &quot;&lt;/a&gt;&quot;;
} else {
echo &quot;Al parecer el usuario con el nombre &quot; . $daticos-&gt;name . &quot; ocultó su perfil para otras personas,&lt;/br&gt;&quot; .
&quot; intenta ver el perfil accediendo desde www.facebook.com/profile.php?id=&quot; . $id[2];
}
echo &quot;&lt;/br&gt;&lt;img src='http://graph.facebook.com/&quot; . $id[2] . &quot;/picture?type=large'/&gt;&quot;;
}
?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.brianur.info/comprobar-quien-es-el-dueno-de-una-foto-en-facebook-con-su-url/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Comparar dos imágenes pixel a pixel</title>
		<link>http://www.brianur.info/comparar-dos-imagenes-pixel-a-pixel/</link>
		<comments>http://www.brianur.info/comparar-dos-imagenes-pixel-a-pixel/#comments</comments>
		<pubDate>Tue, 26 Jul 2011 15:30:41 +0000</pubDate>
		<dc:creator>Brian Urban</dc:creator>
				<category><![CDATA[Codiguillos]]></category>
		<category><![CDATA[comparar]]></category>
		<category><![CDATA[GD]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[pixel]]></category>
		<category><![CDATA[retos]]></category>

		<guid isPermaLink="false">http://www.brianur.info/?p=1304</guid>
		<description><![CDATA[Un sencillo método a tener en cuenta para retos de esteganografía:]]></description>
			<content:encoded><![CDATA[<p>Un sencillo método a tener en cuenta para retos de <strong>esteganografía</strong>:</p>
<pre class="brush: php; title: ; notranslate">&lt;?php
$original = imagecreatefromjpeg('1.jpg');
$modified = imagecreatefrompng('2.png');
$size = getimagesize('1.jpg');
$output = imagecreate($size[0], $size[1]);
imagecolorallocate($output, 255, 255, 255);
$cblack = imagecolorexact($output, 0, 0, 0);
for ($a = 0; $a &lt; $size[0]; $a++) {
for ($b = 0; $b &lt; $size[1]; $b++) {
$colororiginal = imagecolorat($original, $a, $b);
$colormodified = imagecolorat($modified, $a, $b);
if ($colororiginal != $colormodified)
imagesetpixel($output, $a, $b, $cblack);
}
}
imagepng($output, 'resultado.png');
?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.brianur.info/comparar-dos-imagenes-pixel-a-pixel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHPCracker: Crackear diferentes tipos de hash con PHP</title>
		<link>http://www.brianur.info/phpcracker-crackear-diferentes-tipos-de-hash-con-php/</link>
		<comments>http://www.brianur.info/phpcracker-crackear-diferentes-tipos-de-hash-con-php/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 11:43:16 +0000</pubDate>
		<dc:creator>Brian Urban</dc:creator>
				<category><![CDATA[Codiguillos]]></category>
		<category><![CDATA[Toolz]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[brute force]]></category>
		<category><![CDATA[cracking]]></category>
		<category><![CDATA[diccionario]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[iod]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.brianur.info/?p=1228</guid>
		<description><![CDATA[Últimamente resolviendo algunos retos me ha tocado crackear diferentes hash y aunque existen muchos programas para esa labor (como Cain) estos no ofrecen soporte para realizar fuerza bruta a algunos tipos de hash. Por esta razón hice PHPCracker, un sencillo script que permite realizar ataques por fuerza bruta y ataques por diccionario usando PHP. &#160; [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Últimamente resolviendo algunos retos me ha tocado crackear diferentes hash y aunque existen muchos programas para esa labor (como <a title="Cain &amp; Abel" href="http://www.brianur.info/cain-abel-una-herramienta-todo-en-uno/" target="_blank">Cain</a>) estos no ofrecen soporte para realizar fuerza bruta a algunos tipos de hash. Por esta razón hice <strong>PHPCracker</strong>, un sencillo script que permite realizar ataques por fuerza bruta y ataques por diccionario usando PHP.</p>
<p style="text-align: justify;">&nbsp;</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

if (defined('STDIN')) {
        if (count($argv) &lt; 2) {
            echo &quot;#########################################################################\n&quot; .
            &quot;#           PHPCracker UrbaN77 www.RedInfoCol.org  - www.BrianUR.info   #\n&quot; .
            &quot;#########################################################################\n&quot; .
            &quot;# Uso: php phpcracker.php [Modo] [Nombre del hash] [Hash] [Opciones]    #\n&quot; .
            &quot;# --------------------------------------------------------------------- #\n&quot; .
            &quot;# Modo: usa -b hacer un brute force o -d para un ataque por diccionario.#\n&quot; .
            &quot;# Nombre del hash: Por ejemplo md5, sha1 o cual sea el nombre.          #\n&quot; .
            &quot;# Hash: Hash a crackear.                                                #\n&quot; .
            &quot;# Opciones: Estas dependen del modo elegido.                            #\n&quot; .
            &quot;#  - Charset: min para minusculas, may para mayusculas   o all para las #\n&quot; .
            &quot;#             anteriores con numeros y simbolos (Solo para el modo -b). #\n&quot; .
            &quot;#  - Diccionario: nombre del fichero de tu wordlist (Solo para modo -d).#\n&quot; .
            &quot;#########################################################################&quot;;
            exit;
        }
        $modo = $argv[1];
        $tipoHash = $argv[2];
        $hash = $argv[3];

        function crackear($hash, $tipoHash, $charset) {
            if ($charset == &quot;min&quot;) {
                $desde = 97;
                $hasta = 122;
            } elseif ($charset == &quot;may&quot;) {
                $desde = 65;
                $hasta = 90;
            } elseif ($charset == &quot;all&quot;) {
                $desde = 33;
                $hasta = 126;
            } else {
                echo &quot;Necesitas especificar el Charset: min, may o all.&quot;;
                exit;
            }
			echo &quot;Crackeando...\n&quot;;
            for ($i = $desde; $i &lt;= $hasta; $i++) {
                for ($j = $desde; $j &lt;= $hasta; $j++) {
                    for ($k = $desde; $k &lt;= $hasta; $k++) {
                        for ($l = $desde; $l &lt;= $hasta; $l++) {
                            $salida = hash($tipoHash, chr($i) . chr($j) . chr($k) . chr($l));
                            if ($hash == $salida) {
                                echo &quot;Password encontrado: &quot; . chr($i) . chr($j) . chr($k) . chr($l).&quot;\n&quot;;
                                exit;
                            }
                        }
                    }
                }
            }
        }

        if ($modo == &quot;-d&quot;) {
            $wordlist = $argv[4];
            if (file_exists($wordlist)) {
                $diccionario = file($wordlist);
				echo &quot;Crackeando...\n&quot;;
                foreach ($diccionario as $rel) {
                    $salida = hash($tipoHash, $rel);
                    if ($salida == $hash) {
                        echo &quot;El password es: &quot; . $rel;
                        exit;
                    }
                }
            } else {
                echo &quot;El archivo &quot; . $wordlist . &quot; no existe.&quot;;
                exit;
            }
        } elseif ($modo == &quot;-b&quot;) {
            $charset = $argv[4];
            crackear($hash, $tipoHash, $charset);
        }
        echo &quot;Password no encontrado :/ intenta probando con otro tipo de hash, otro charset o diccionario.&quot;;
} else {
    echo(&quot;Necesitas correr este script desde la consola.&quot;);
}
?&gt;
</pre>
<p><span id="more-1228"></span></p>
<p style="text-align: justify;">El script hace uso de la función <a title="Hash PHP" href="http://www.php.net/manual/en/function.hash.php" target="_blank">hash</a> de PHP, soportando más de 30 tipos de hash como <strong>md5</strong>, <strong>sha1</strong>, <strong>whirlpool </strong>y otros. De momento solo funciona el ataque con 4 caracteres, se pueden agregar más for manualmente para aumentar el número de caracteres pero no es la mejor opción&#8230;  para la próxima versión prometo arreglar ese detalle utilizando recursividad.</p>
<p style="text-align: justify;">Gracias a PHP, PHPCracker puede correr en diferentes plataformas como iOS o Android:</p>
<p style="text-align: justify;"><img class="aligncenter" title="Cracking iPhone" src="http://a7.sphotos.ak.fbcdn.net/hphotos-ak-snc6/268429_10150230730472605_741872604_7402208_2082495_n.jpg" alt="" width="602" height="401" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brianur.info/phpcracker-crackear-diferentes-tipos-de-hash-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enviar datos vía post y get usando cURL y PHP</title>
		<link>http://www.brianur.info/enviar-datos-via-post-y-get-usando-curl-y-php/</link>
		<comments>http://www.brianur.info/enviar-datos-via-post-y-get-usando-curl-y-php/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 00:27:54 +0000</pubDate>
		<dc:creator>Brian Urban</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.brianur.info/?p=1170</guid>
		<description><![CDATA[Continuando con el uso de cURL y PHP veremos la forma de enviar datos ya sea por Post o Get, útil en caso de querer por ejemplo rellenar un formulario de forma automatizada, hay scripts que usan este método para saltar captchas así que las funcionalidades son bastantes. Enviar datos por Post Para el envió [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Continuando con el <a title="cURL y PHP" href="http://www.brianur.info/curl-y-php/">uso de cURL y PHP</a> veremos la forma de enviar datos ya sea por Post o Get, útil en caso de querer por ejemplo rellenar un formulario de forma automatizada, hay scripts que usan este método para saltar captchas así que las funcionalidades son bastantes.</p>
<h2>Enviar datos por Post</h2>
<p>Para el envió por Post se hace uso de CURLOPT_POST y CURLOPT_POSTFIELDS. Manos al código:</p>
<pre class="brush: php; title: ; notranslate">
//Iniciamos cURL.
$ch = curl_init();
//Accedemos a la URL
curl_setopt($ch, CURLOPT_URL, &quot;http://web.com/formulario.php&quot;);
//Indicamos que vamos a enviar datos por Post.
curl_setopt ($ch, CURLOPT_POST, true);
//Iniciamos una sesion
curl_setopt($ch, CURLOPT_COOKIE, 'PHPSESSID=cookie;');
//Indicamos que queremos imprimir el resultado
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
//Hacemos uso de un User Agent
curl_setopt($ch, CURLOPT_USERAGENT, &quot;Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13&quot;);
//Enviamos los datos por post
curl_setopt ($ch, CURLOPT_POSTFIELDS, &quot;codigo=&quot;.urlencode($datos));
//Ejecutamos e imprimimos el resultado
echo curl_exec($ch);</pre>
<p><span id="more-1170"></span></p>
<p>Para <strong>CURLOPT_POSTFIELDS</strong> se debe indicar el nombre de cada uno de los campos que se envían, en este caso &#8220;codigo=&#8221;.<br />
Nota: si es más de un campo se usa el carácter &amp; para separarlos.</p>
<h2>Enviar datos por Get</h2>
<p>Enviar datos vía get es bastante sencillo, al acceder a la url hay que enviar los datos de la siguiente forma:</p>
<pre class="brush: php; title: ; notranslate">curl_setopt($ch, CURLOPT_URL, &quot;http://web.com/formulario.php?codigo=&quot;.$datos);</pre>
<p>Nota: no intentes usar algo como <strong>CURLOPT_GET </strong>porque no existe <img src='http://www.brianur.info/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.brianur.info/enviar-datos-via-post-y-get-usando-curl-y-php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Uso de cURL en PHP</title>
		<link>http://www.brianur.info/curl-y-php/</link>
		<comments>http://www.brianur.info/curl-y-php/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 21:56:00 +0000</pubDate>
		<dc:creator>Brian Urban</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.brianur.info/?p=1163</guid>
		<description><![CDATA[cURL es una herramienta para usar en un intérprete de comandos para transferir archivos con sintaxis URL, soporta FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, FILE y LDAP. cURL soporta certificados HTTPS, HTTP POST, HTTP PUT, subidas FTP, Kerberos, subidas mediante formulario HTTP, proxies, cookies, autenticación mediante usuario+contraseña (Basic, DIgest, NTLM y Negotiate [...]]]></description>
			<content:encoded><![CDATA[<blockquote>
<p style="text-align: justify;">cURL es una herramienta para usar en un intérprete de comandos para transferir archivos con sintaxis URL, soporta FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, FILE y LDAP. cURL soporta certificados HTTPS, HTTP POST, HTTP PUT, subidas FTP, Kerberos, subidas mediante formulario HTTP, proxies, cookies, autenticación mediante usuario+contraseña (Basic, DIgest, NTLM y Negotiate para HTTP y kerberos4 para FTP), continuación de transferencia de archivos, tunneling de proxy http y muchas otras prestaciones. De <a title="cURL" href="http://es.wikipedia.org/wiki/CURL" target="_blank">Wikipedia</a></p>
</blockquote>
<p><a title="cURL PHP" href="http://es.php.net/manual/es/ref.curl.php" target="_blank"><strong>cURL</strong></a> ofrece miles de usos, normalmente en el ámbito de desarrollo web se usa para trabajar con APIs, extraer información concreta en webs, etc. Manos al código:</p>
<pre class="brush: php; title: ; notranslate">
//Iniciamos cURL
$ch = curl_init();
//Especificamos en la variable url el sitio al cual nos vamos a conectar
$url = &quot;http://www.brianur.info&quot;;
//Accedemos al sitio
curl_setopt($ch,CURLOPT_URL,$url);
// CURLOPT_RETURNTRANSFER se usa para almacenar el valor de curl_exec en una variable, en este caso es false porque queremos que se imprima el resultado en pantalla en vez de almacenarlo en la variable
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
//Opcionalmente en caso de que la web requiera iniciar sesion, se puede hacer uso de CURLOPT_COOKIE
curl_setopt($ch, CURLOPT_COOKIE, 'PHPSESSID=cookie;');
//Como opción podemos indicar un Usear Agent
curl_setopt($ch, CURLOPT_USERAGENT, &quot;Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13&quot;);
//Ejecutamos y imprimimos
echo curl_exec($ch);
//Opcionalmente cerramos la conexión.
curl_close($ch);
</pre>
<p style="text-align: justify;"><span id="more-1163"></span>Al probar este código debería aparecer este blog tal cual, ya que aun no le indicamos exactamente qué información extraer. Si te das cuenta es bastante sencillo el uso de <strong>cURL</strong>. También CURLOPT tiene más cosas interesantes:</p>
<p><strong>CURLOPT_REFERER:</strong> Para enviar un sitio como referido.<br />
<strong>CURLOPT_PROXY:</strong> Uso de Proxy para hacer las peticiones.<br />
<strong>CURLOPT_CONNECTTIMEOUT:</strong> Tiempo máximo para hacer la conexión.<br />
<strong>CURLOPT_HTTPHEADER: </strong>Permite enviar las cabeceras en un array.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brianur.info/curl-y-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Crear un reloj analógico con Javascript</title>
		<link>http://www.brianur.info/crear-un-reloj-analogico-con-javascript/</link>
		<comments>http://www.brianur.info/crear-un-reloj-analogico-con-javascript/#comments</comments>
		<pubDate>Thu, 16 Dec 2010 18:43:08 +0000</pubDate>
		<dc:creator>Brian Urban</dc:creator>
				<category><![CDATA[Codiguillos]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[reloj]]></category>

		<guid isPermaLink="false">http://www.brianur.info/?p=1047</guid>
		<description><![CDATA[El siguiente reloj puede ser creado sin necesidad de usar imágenes ni CSS, gracias a una librería en Javascript llamada Raphaël que nos permite crear gráficos de una manera sencilla. Visto en el blog de Emanuele Feronato]]></description>
			<content:encoded><![CDATA[<p>El siguiente reloj puede ser creado sin necesidad de usar imágenes ni CSS, gracias a una librería en Javascript llamada <a href="http://raphaeljs.com/">Raphaël</a> que nos permite crear gráficos de una manera sencilla.</p>
<p style="text-align:center;"><iframe src ="http://www.brianur.info/ejemplos/reloj.htm" width="220" height="220"></iframe></p>
<p><span id="more-1047"></span></p>
<pre class="brush: jscript; title: ; notranslate">&lt;script type=&quot;text/javascript&quot; src=&quot;https://github.com/DmitryBaranovskiy/raphael/raw/master/raphael-min.js&quot;&gt;&lt;/script&gt;
 &lt;script type=&quot;text/javascript&quot;&gt;

 function draw_clock(){
 canvas = Raphael(&quot;clock_id&quot;,200, 200);
 var clock = canvas.circle(100,100,95);
 clock.attr({&quot;fill&quot;:&quot;#f5f5f5&quot;,&quot;stroke&quot;:&quot;#444444&quot;,&quot;stroke-width&quot;:&quot;5&quot;})
 var hour_sign;
 for(i=0;i&lt;12;i++){
 var start_x = 100+Math.round(80*Math.cos(30*i*Math.PI/180));
 var start_y = 100+Math.round(80*Math.sin(30*i*Math.PI/180));
 var end_x = 100+Math.round(90*Math.cos(30*i*Math.PI/180));
 var end_y = 100+Math.round(90*Math.sin(30*i*Math.PI/180));
 hour_sign = canvas.path(&quot;M&quot;+start_x+&quot; &quot;+start_y+&quot;L&quot;+end_x+&quot; &quot;+end_y);
 }
 hour_hand = canvas.path(&quot;M100 100L100 50&quot;);
 hour_hand.attr({stroke: &quot;#444444&quot;, &quot;stroke-width&quot;: 6});
 minute_hand = canvas.path(&quot;M100 100L100 40&quot;);
 minute_hand.attr({stroke: &quot;#444444&quot;, &quot;stroke-width&quot;: 4});
 second_hand = canvas.path(&quot;M100 110L100 25&quot;);
 second_hand.attr({stroke: &quot;#444444&quot;, &quot;stroke-width&quot;: 2});
 var pin = canvas.circle(100, 100, 5);
 pin.attr(&quot;fill&quot;, &quot;#000000&quot;);
 update_clock()
 setInterval(&quot;update_clock()&quot;,1000);
 }

 function update_clock(){
 var now = new Date();
 var hours = now.getHours();
 var minutes = now.getMinutes();
 var seconds = now.getSeconds();
 hour_hand.rotate(30*hours+(minutes/2.5), 100, 100);
 minute_hand.rotate(6*minutes, 100, 100);
 second_hand.rotate(6*seconds, 100, 100);

 }

 &lt;/script&gt;
 &lt;body&gt;
 &lt;div id=&quot;clock_id&quot;&gt;&lt;/div&gt;
 &lt;script&gt;draw_clock()&lt;/script&gt;
 &lt;/body&gt; </pre>
<p>Visto en el blog de <a href="http://www.emanueleferonato.com/2010/12/11/javascript-analog-clock-with-no-images-and-no-css/">Emanuele Feronato</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brianur.info/crear-un-reloj-analogico-con-javascript/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>[Codiguillo] Invertir contenido de un archivo con PHP</title>
		<link>http://www.brianur.info/codiguillo-invertir-contenido-de-un-archivo-con-php/</link>
		<comments>http://www.brianur.info/codiguillo-invertir-contenido-de-un-archivo-con-php/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 21:17:08 +0000</pubDate>
		<dc:creator>Brian Urban</dc:creator>
				<category><![CDATA[Codiguillos]]></category>
		<category><![CDATA[invertir texto]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.brianur.info/?p=961</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<pre class="brush: php; title: ; notranslate">&lt;?php
$archivo = file_get_contents(&quot;archivo.BMP&quot;); // Se obtiene el contenido de &quot;archivo.BMP&quot;.
$voltear=strrev($archivo); // Se hace uso de la funcion strrev para invertir el archivo.
echo $voltear; // Se imprime el contenido del archivo inverso, esta linea se puede omitir.
$archivo = fopen (&quot;tal.bmp&quot;, &quot;w+&quot;); // Se abre el archivo tal.bmp.
fwrite($archivo, $voltear); // Se escribe en el archivo tal.bmp el contenido invertido.
fclose($archivo); // Se cierra el archivo.
?&gt;﻿</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.brianur.info/codiguillo-invertir-contenido-de-un-archivo-con-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Crear una aplicación de Frases para Facebook: Invitar amigos a usar la aplicación</title>
		<link>http://www.brianur.info/crear-una-aplicacion-de-frases-para-facebook-invitar-amigos-a-usar-la-aplicacion/</link>
		<comments>http://www.brianur.info/crear-una-aplicacion-de-frases-para-facebook-invitar-amigos-a-usar-la-aplicacion/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 18:46:26 +0000</pubDate>
		<dc:creator>Brian Urban</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[crear aplicacion]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.brianur.info/?p=900</guid>
		<description><![CDATA[Este articulo hace parte de la vieja API de Facebook, para más información sobre la nueva API te recomiendo leer Funcionamiento de la Graph API de Facebook. Continuando con el Tutorial para crear una aplicación de frases, veremos algo muy importante para hacer crecer nuestra aplicación: Invitar amigos. Para hacer esto necesitamos hacer uso de [...]]]></description>
			<content:encoded><![CDATA[<h2><span style="color: #ff0000;">Este articulo hace parte de la vieja API de Facebook, para más información sobre la nueva API te recomiendo leer </span><strong><span style="color: #ff0000;"><a title="Graph API Facebook" href="http://www.brianur.info/funcionamiento-de-la-graph-api-de-facebook/" target="_blank"><span style="color: #ff0000;">Funcionamiento de la Graph API de Facebook</span></a></span>.</strong></h2>
<p style="text-align: justify;">Continuando con el <a href="http://www.brianur.info/crear-una-aplicacion-de-frases-para-facebook/">Tutorial para crear una aplicación de frases</a>, veremos algo muy importante para hacer crecer nuestra aplicación: Invitar amigos.</p>
<p style="text-align: justify;">Para hacer esto necesitamos hacer uso de las siguientes etiquetas FBML:</p>
<ul>
<li><a href="http://developers.facebook.com/docs/reference/fbml/request-form">fb:request-form</a> que es la encargada de enviar la solicitud a los usuarios seleccionados.</li>
<li><a href="http://developers.facebook.com/docs/reference/fbml/multi-friend-selector">fb:multi-friend-selector</a> que es la que muestra la lista de amigos para poder seleccionarlos.</li>
<li><a href="http://developers.facebook.com/docs/reference/fbml/multi-friend-selector_%28condensed%29">fb:multi-friend-selector_(condensed)</a> es una alternativa a fb:multi-friend-selector, hace lo mismo pero se muestra de una forma más reducida.</li>
</ul>
<pre class="brush: xml; title: ; notranslate">&lt;fb:request-form
 action=&quot;index.php?accion=amigos&quot;
 method=&quot;POST&quot;
 invite=&quot;true&quot;
 type=&quot;Tu aplicacion!&quot;
 content=&quot;Hola! encontre esta aplicacion y pense que te podria gustar. Descripcion de la aplicacion
 &lt;fb:req-choice url='http://www.facebook.com/login.php?api_key=&lt;c:out value='${apiKey}' /&gt;'
 label='Ir a la aplicacion!' /&gt;&quot;&gt;

 &lt;fb:multi-friend-selector
 showborder=&quot;false&quot;
 actiontext=&quot;Invita a tus amigos a usar esta aplicacion.&quot;
 exclude_ids=&quot;&lt;c:out value='${appUserFriends}' /&gt;&quot;
 max=&quot;20&quot; /&gt;
&lt;/fb:request-form&gt;</pre>
<p>El resultado:</p>
<p><a href="http://www.brianur.info/crear-una-aplicacion-de-frases-para-facebook-invitar-amigos-a-usar-la-aplicacion/amigos/" rel="attachment wp-att-901"><img class="aligncenter size-full wp-image-901" title="Invitar amigos en Facebook" src="http://www.brianur.info/wp-content/uploads/2010/10/amigos.png" alt="" width="532" height="376" /></a>Pueden ver el ejemplo funcionando <a href="http://apps.facebook.com/myloves/amigos.php">aquí</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brianur.info/crear-una-aplicacion-de-frases-para-facebook-invitar-amigos-a-usar-la-aplicacion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Charla: Introducción a AJAX y JavaScript</title>
		<link>http://www.brianur.info/charla-introduccion-a-ajax-y-javascript/</link>
		<comments>http://www.brianur.info/charla-introduccion-a-ajax-y-javascript/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 21:37:38 +0000</pubDate>
		<dc:creator>Brian Urban</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[charla]]></category>
		<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.brianur.info/?p=793</guid>
		<description><![CDATA[Charla por Ángel ‘Java’ López. En total 1:45 hs hablando de AJAX y varias tecnologías webs: 00:00 Introducción 05:30 AJAX 07:30 JavaScript y JSON 16:00 Objetos en JavaScript 19:00 Prototipos 23:50 Funciones 26:00 Clases 28:00 HTTP / HTML / XHTML / XML / CSS 32:20 DOM / DHTML 34:20 XMLHttpRequest 43:00 Ejemplos reales de AJAX [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Charla por <a href="http://www.exactas.uba.ar/uti/?p=63">Ángel ‘Java’ López</a>. En total 1:45 hs hablando de AJAX y varias tecnologías webs:</p>
<p style="text-align: left;">00:00 Introducción<br />
05:30 AJAX<br />
07:30 JavaScript y JSON<br />
16:00 Objetos en JavaScript<br />
19:00 Prototipos<br />
23:50 Funciones<span id="more-793"></span><br />
26:00 Clases<br />
28:00 HTTP / HTML / XHTML / XML / CSS<br />
32:20 DOM / DHTML<br />
34:20 XMLHttpRequest<br />
43:00 Ejemplos reales de AJAX<br />
48:40 Asincónico<br />
53:00 Lado del servidor<br />
1:05:30 jQuery<br />
1:10:00 Plugin: JQueryUI<br />
1:21:00 JSON usado con AJAX<br />
1:28:00 Plugin: JQuery Autocomplete<br />
1:32:00 Plugin: Grilla<br />
1:40:00 Resumen y por que usar JavaScript / AJAX</p>
<p style="text-align: center;"><div class="wpjp-embed-code">
		<div id="wpjp-player-b1d09a6d8ad932b526d69610a7f35a57"><a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=shockwaveFlash" rel="nofollow">Get The Latest Flash Player</a></div>
		<script type="text/javascript">
		var so = new SWFObject('http://www.brianur.info/wp-content/plugins/wp-jw-player/swf/player.swf','wpjp_player','450','350','9');
		so.addParam('allowfullscreen','true');
		so.addParam('allowscriptaccess','always');
		so.addParam('wmode','transparent');
		so.addParam('flashvars','file=http://www.exactas.uba.ar/uti/videos/lopez.flv&playlist=none&autostart=');
		so.write('wpjp-player-b1d09a6d8ad932b526d69610a7f35a57');
		</script><div class="wpjp-attribution-text"><p style="font-size:8px;text-align:center;"><a href="http://www.tubepress.net/wp-jw-player" target="_blank">WP JW Player Plugin</a> Powered by <a href="http://www.tubepress.net/es" target="_blank">TubePress.NET</a></p></div></div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brianur.info/charla-introduccion-a-ajax-y-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.exactas.uba.ar/uti/videos/lopez.flv" length="250522346" type="video/x-flv" />
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 2/57 queries in 0.044 seconds using disk: basic
Object Caching 1098/1231 objects using disk: basic

Served from: www.brianur.info @ 2012-02-05 05:19:13 -->
