{"id":634,"date":"2005-03-27T13:02:00","date_gmt":"2005-03-27T20:02:00","guid":{"rendered":"http:\/\/kodegeek.com\/blog\/?p=634"},"modified":"2005-03-27T13:02:00","modified_gmt":"2005-03-27T20:02:00","slug":"echando-codigo-como-automatizar-los-ping-manuales-de-veneblogs-usando-java-y-ethereal","status":"publish","type":"post","link":"http:\/\/kodegeek.com\/blog\/2005\/03\/27\/echando-codigo-como-automatizar-los-ping-manuales-de-veneblogs-usando-java-y-ethereal\/","title":{"rendered":"Echando c\u00f3digo: Como automatizar los &quot;Ping Manuales&quot; de VeneBlogs, usando Java y Ethereal"},"content":{"rendered":"<p>Ya como hab\u00eda comentando antes en este Blog, les decia que Ethereal puede ser muy \u00fatil no s\u00f3lo con fines de seguridad sino tambi\u00e9n como una herramienta de desarrollo de aplicaciones. Por ejemplo, suponga que usted decide hacer una clase en Java la cual le hace el &#8220;<a href=\"http:\/\/www.veneblogs.com\/ping\/pingmanual.php\">Ping manual<\/a>&#8221; a VeneBlogs. Dado que a\u00fan no se ha prestado para abusos, el colocar los datos all\u00ed es muy simple ya que s\u00f3lo se exige el usuario y la clave para poder hacer el ping usando una forma en HTML que usa el m\u00e9todo POST.<\/p>\n<p>Podemos usar Ethereal para capturar todo el tr\u00e1fico desde el principio, as\u00ed que con ello primero obtenemos el HTML de la forma a disecar:<\/p>\n<p><a href=\"http:\/\/www.flickr.com\/photos\/65069581@N00\/3215388\/\" title=\"Photo Sharing\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/photos2.flickr.com\/3215388_7f9e9ceb97.jpg\" alt=\"VeneBlogs HTML Form\" height=\"345\" width=\"500\" \/><\/a><\/p>\n<p>Sin embargo esta parte de la conversaci\u00f3n es trivial, ya que podemos usar un navegador como Mozilla para ver el c\u00f3digo HTML de la forma; \u00bfPero y que hay de lo que realmente se envia por el cable hacia el servidor? Bueno, siguiendo las instrucciones de el tutorial anterior, podemos capturar el resto de la conversaci\u00f3n y ver lo siguiente:<\/p>\n<ul>\n<li>Contenido de la forma POST (cabeceras HTTP, contenido de la forma, Cookies)<\/li>\n<li>Respuesta de retorno de el servidor<\/li>\n<\/ul>\n<p><span style=\"text-decoration: underline;\"><a href=\"http:\/\/www.flickr.com\/photos\/65069581@N00\/3217527\/\" title=\"Photo Sharing\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/photos1.flickr.com\/3217527_f04301c920.jpg\" alt=\"VeneBlogs captura de datos\" height=\"442\" width=\"500\" \/><\/a><\/span><\/p>\n<p>Por cierto, \u00bfya vi\u00f3 el password en el URL (si, esa no es mi verdadera clave :))?. <span style=\"font-style: italic;\">Es una lastima que VeneBlogs no utilice SSL + HTTP para proteger a sus usuarios de este tipo de problemas<\/span>.<\/p>\n<p>Mi primer intento de hacer un ping a VeneBlogs desde Java fu\u00e9 el siguiente programa:<\/p>\n<style type=\"text\/css\"><!-- .syntax0 { color: #000000; } .syntax1 { color: #cc0000; } .syntax2 { color: #ff8400; } .syntax3 { color: #6600cc; } .syntax4 { color: #cc6600; } .syntax5 { color: #ff0000; } .syntax6 { color: #9966ff; } .syntax7 { background: #ffffcc; color: #ff0066; } .syntax8 { color: #006699; font-weight: bold; } .syntax9 { color: #009966; font-weight: bold; } .syntax10 { color: #0099ff; font-weight: bold; } .syntax11 { color: #66ccff; font-weight: bold; } .syntax12 { color: #02b902; } .syntax13 { color: #ff00cc; } .syntax14 { color: #cc00cc; } .syntax15 { color: #9900cc; } .syntax16 { color: #6600cc; } .syntax17 { color: #0000ff; } .syntax18 { color: #000000; font-weight: bold; } .gutter { background: #dbdbdb; color: #000000; } .gutterH { background: #dbdbdb; color: #990066; } --><br \/><\/style>\n<p><\/p>\n<pre><span class=\"gutter\">   1:<\/span><span class=\"syntax9\">package<\/span> com.blogspot.elangelnegro;<br \/><span class=\"gutter\">   2:<\/span><span class=\"syntax9\">import<\/span> java.util.ResourceBundle;<br \/><span class=\"gutter\">   3:<\/span><span class=\"syntax9\">import<\/span> java.io.IOException;<br \/><span class=\"gutter\">   4:<\/span><span class=\"syntax9\">import<\/span> java.io.InputStreamReader;<br \/><span class=\"gutterH\">   5:<\/span><span class=\"syntax9\">import<\/span> java.io.BufferedReader;<br \/><span class=\"gutter\">   6:<\/span><span class=\"syntax9\">import<\/span> java.io.LineNumberReader;<br \/><span class=\"gutter\">   7:<\/span><span class=\"syntax9\">import<\/span> java.io.DataOutputStream;<br \/><span class=\"gutter\">   8:<\/span><span class=\"syntax9\">import<\/span> java.net.URL;<br \/><span class=\"gutter\">   9:<\/span><span class=\"syntax9\">import<\/span> java.net.URLConnection;<br \/><span class=\"gutterH\">  10:<\/span><span class=\"syntax9\">import<\/span> java.net.HttpURLConnection;<br \/><span class=\"gutter\">  11:<\/span><span class=\"syntax9\">import<\/span> java.net.URLEncoder;<br \/><span class=\"gutter\">  12:<\/span><span class=\"syntax9\">import<\/span> java.net.MalformedURLException;<br \/><span class=\"gutter\">  13:<\/span><br \/><span class=\"gutter\">  14:<\/span><span class=\"syntax3\">\/**<\/span><br \/><span class=\"gutterH\">  15:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">This<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">program<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">connects<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">to<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">VeneBlogs<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">com<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">manual<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">ping<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">page<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">and<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">sends<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">a<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">ping<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">to<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">it<\/span><span class=\"syntax3\">,<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">using<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">POST<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">method<\/span><span class=\"syntax3\">.<\/span><br \/><span class=\"gutter\">  16:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">b<\/span><span class=\"syntax17\">&gt;<\/span><span class=\"syntax3\">License<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">\/<\/span><span class=\"syntax17\">b<\/span><span class=\"syntax17\">&gt;<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">LGPL<\/span><span class=\"syntax3\">.<\/span><br \/><span class=\"gutter\">  17:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Write<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">a<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Resource<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Bundle<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">file<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">with<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">contents<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">similar<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">to<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">this<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">one<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">(<\/span><span class=\"syntax3\">change<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">only<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">appropriate<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">parts<\/span><span class=\"syntax3\">)<\/span><span class=\"syntax3\">:<\/span><br \/><span class=\"gutter\">  18:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">pre<\/span><span class=\"syntax17\">&gt;<\/span><br \/><span class=\"gutter\">  19:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">#<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">URL<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">used<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">to<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">connect<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">to<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Veneblogs<\/span><br \/><span class=\"gutterH\">  20:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">com<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">blogspot<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">elangelnegro<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">ManualPing<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">url<\/span><span class=\"syntax3\">=<\/span><span class=\"syntax3\">http<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">www<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">veneblogs<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">com<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">ping<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">prlogin<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">php<\/span><br \/><span class=\"gutter\">  21:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">com<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">blogspot<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">elangelnegro<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">ManualPing<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">referer<\/span><span class=\"syntax3\">=<\/span><span class=\"syntax3\">http<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">www<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">veneblogs<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">com<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">ping<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">pingmanual<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">php<\/span><br \/><span class=\"gutter\">  22:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">com<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">blogspot<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">elangelnegro<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">ManualPing<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">username<\/span><span class=\"syntax3\">=<\/span><span class=\"syntax3\">PPPP@domain<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">com<\/span><br \/><span class=\"gutter\">  23:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">com<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">blogspot<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">elangelnegro<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">ManualPing<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">password<\/span><span class=\"syntax3\">=<\/span><span class=\"syntax3\">XXXX<\/span><br \/><span class=\"gutter\">  24:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">\/<\/span><span class=\"syntax17\">pre<\/span><span class=\"syntax17\">&gt;<\/span><br \/><span class=\"gutterH\">  25:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@author<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Jose<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">V<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Nunez<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Zuleta<\/span><span class=\"syntax3\"><\/span><br \/><span class=\"gutter\">  26:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@version<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">0<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">1<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">-<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">01<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">10<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">2005<\/span><br \/><span class=\"gutter\">  27:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@see<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">http<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">www<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">javaworld<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">com<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">javaworld<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">javatips<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">jw<\/span><span class=\"syntax3\">-<\/span><span class=\"syntax3\">javatip34<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">html<\/span><br \/><span class=\"gutter\">  28:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@see<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">http<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">elangelnegro<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">blogspot<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">com<\/span><br \/><span class=\"gutter\">  29:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span><br \/><span class=\"gutterH\">  30:<\/span><span class=\"syntax8\">public<\/span> <span class=\"syntax8\">final<\/span> <span class=\"syntax10\">class<\/span> VeneBlogsManualPing <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  31:<\/span>        <span class=\"syntax8\">private<\/span> <span class=\"syntax8\">static<\/span> <span class=\"syntax8\">final<\/span> ResourceBundle BUNDLE <span class=\"syntax18\">=<\/span><br \/><span class=\"gutter\">  32:<\/span>                ResourceBundle.<span class=\"syntax6\">getBundle<\/span>(VeneBlogsManualPing.<span class=\"syntax10\">class<\/span>.<span class=\"syntax6\">getName<\/span>());<br \/><span class=\"gutter\">  33:<\/span>        <span class=\"syntax8\">public<\/span> <span class=\"syntax8\">static<\/span> <span class=\"syntax8\">final<\/span> String VERSION <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">1.0<\/span><span class=\"syntax13\">\"<\/span>;<br \/><span class=\"gutter\">  34:<\/span>        <span class=\"syntax3\">\/**<\/span><br \/><span class=\"gutterH\">  35:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Command<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">line<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">processing<\/span><br \/><span class=\"gutter\">  36:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@param<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">args<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Command<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">line<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">arguments<\/span><span class=\"syntax3\">,<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">currently<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">ignored<\/span><br \/><span class=\"gutter\">  37:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@throws<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">IOException<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">if<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">there<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">is<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">an<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">error<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">communicating<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">with<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">website<\/span><br \/><span class=\"gutter\">  38:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@since<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">0<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">1<\/span><br \/><span class=\"gutter\">  39:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span><br \/><span class=\"gutterH\">  40:<\/span>        <span class=\"syntax8\">public<\/span> <span class=\"syntax8\">static<\/span> <span class=\"syntax8\">final<\/span> <span class=\"syntax10\">void<\/span> <span class=\"syntax6\">main<\/span>(String [] args) <span class=\"syntax8\">throws<\/span> IOException <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  41:<\/span>                <span class=\"syntax8\">if<\/span> (BUNDLE.<span class=\"syntax6\">getString<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">com.blogspot.elangelnegro.VeneBlogsManualPing.url<\/span><span class=\"syntax13\">\"<\/span>) <span class=\"syntax18\">=<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  42:<\/span>                        <span class=\"syntax8\">throw<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">IllegalArgumentException<\/span>();<br \/><span class=\"gutter\">  43:<\/span>                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  44:<\/span>                URL url <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>;<br \/><span class=\"gutterH\">  45:<\/span>                LineNumberReader reader <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>;<br \/><span class=\"gutter\">  46:<\/span>                DataOutputStream out <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>;<br \/><span class=\"gutter\">  47:<\/span>                <span class=\"syntax8\">try<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  48:<\/span>                        url <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span><br \/><span class=\"gutter\">  49:<\/span>                                <span class=\"syntax6\">URL<\/span>(BUNDLE.<span class=\"syntax6\">getString<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">com.blogspot.elangelnegro.VeneBlogsManualPing.url<\/span><span class=\"syntax13\">\"<\/span>));<br \/><span class=\"gutterH\">  50:<\/span>                        URLConnection con <span class=\"syntax18\">=<\/span> url.<span class=\"syntax6\">openConnection<\/span>();<br \/><span class=\"gutter\">  51:<\/span>                        con.<span class=\"syntax6\">setDoInput<\/span>(<span class=\"syntax14\">true<\/span>);<br \/><span class=\"gutter\">  52:<\/span>                        con.<span class=\"syntax6\">setDoOutput<\/span>(<span class=\"syntax14\">true<\/span>);<br \/><span class=\"gutter\">  53:<\/span>                        con.setUseCaches (<span class=\"syntax14\">false<\/span>);<br \/><span class=\"gutter\">  54:<\/span>                        con.<span class=\"syntax6\">setRequestProperty<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">User-Agent<\/span><span class=\"syntax13\">\"<\/span>,<br \/><span class=\"gutterH\">  55:<\/span>                                VeneBlogsManualPing.<span class=\"syntax10\">class<\/span>.<span class=\"syntax6\">getName<\/span>() <span class=\"syntax18\">+<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">\/<\/span><span class=\"syntax13\">\"<\/span> <span class=\"syntax18\">+<\/span><br \/><span class=\"gutter\">  56:<\/span>                                VERSION <span class=\"syntax18\">+<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">El<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">Angel<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">Negro<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\">  57:<\/span>                        con.<span class=\"syntax6\">setRequestProperty<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Accept<\/span><span class=\"syntax13\">\"<\/span>,<br \/><span class=\"gutter\">  58:<\/span>                                <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">text\/xml,text\/plain,text\/html<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\">  59:<\/span>                        con.<span class=\"syntax6\">setRequestProperty<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Content-Type<\/span><span class=\"syntax13\">\"<\/span>,<br \/><span class=\"gutterH\">  60:<\/span>                                <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">application\/x-www-form-urlencoded<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\">  61:<\/span>                        con.<span class=\"syntax6\">setRequestProperty<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Referer<\/span><span class=\"syntax13\">\"<\/span>,<br \/><span class=\"gutter\">  62:<\/span>                                BUNDLE.<span class=\"syntax6\">getString<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">com.blogspot.elangelnegro.VeneBlogsManualPing.referer<\/span><span class=\"syntax13\">\"<\/span>));<br \/><span class=\"gutter\">  63:<\/span>                        ((HttpURLConnection) con).<span class=\"syntax6\">setRequestMethod<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">POST<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\">  64:<\/span>                        ((HttpURLConnection) con).<span class=\"syntax6\">setInstanceFollowRedirects<\/span>(<span class=\"syntax14\">true<\/span>);<br \/><span class=\"gutterH\">  65:<\/span>                        <span class=\"syntax2\">\/\/<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Write<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">form<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">to<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Website<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">using<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">POST<\/span><br \/><span class=\"gutter\">  66:<\/span>                        out <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">DataOutputStream<\/span>(con.<span class=\"syntax6\">getOutputStream<\/span>());<br \/><span class=\"gutter\">  67:<\/span>                        <span class=\"syntax2\">\/\/<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Append<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">operands<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">in<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">same<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">order,<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">we<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">don't<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">know<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">if<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">they<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">process<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">them<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">by<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">name...<\/span><br \/><span class=\"gutter\">  68:<\/span>                        StringBuffer postData <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">StringBuffer<\/span>();<br \/><span class=\"gutter\">  69:<\/span>                        postData.<span class=\"syntax6\">append<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">username=<\/span><span class=\"syntax13\">\"<\/span>  <span class=\"syntax18\">+<\/span><br \/><span class=\"gutterH\">  70:<\/span>                                URLEncoder.<span class=\"syntax6\">encode<\/span>(<br \/><span class=\"gutter\">  71:<\/span>                                        BUNDLE.<span class=\"syntax6\">getString<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">com.blogspot.elangelnegro.VeneBlogsManualPing.username<\/span><span class=\"syntax13\">\"<\/span>))<br \/><span class=\"gutter\">  72:<\/span>                                <span class=\"syntax18\">+<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">&<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\">  73:<\/span>                        postData.<span class=\"syntax6\">append<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">operation=in&<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\">  74:<\/span>                        postData.<span class=\"syntax6\">append<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">password=<\/span><span class=\"syntax13\">\"<\/span>   <span class=\"syntax18\">+<\/span><br \/><span class=\"gutterH\">  75:<\/span>                                URLEncoder.<span class=\"syntax6\">encode<\/span>(<br \/><span class=\"gutter\">  76:<\/span>                                        BUNDLE.<span class=\"syntax6\">getString<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">com.blogspot.elangelnegro.VeneBlogsManualPing.password<\/span><span class=\"syntax13\">\"<\/span>))<br \/><span class=\"gutter\">  77:<\/span>                                <span class=\"syntax18\">+<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">&<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\">  78:<\/span>                        <span class=\"syntax2\">\/\/<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">They<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">have<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">it<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">all<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">this<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">empty<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">spaces,<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">don't<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">ask<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">me<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">why!<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">:)<\/span><br \/><span class=\"gutter\">  79:<\/span>                        postData.<span class=\"syntax6\">append<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">submit=<\/span><span class=\"syntax13\">\"<\/span> <span class=\"syntax18\">+<\/span><br \/><span class=\"gutterH\">  80:<\/span>                                URLEncoder.<span class=\"syntax6\">encode<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">Enviar<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">\"<\/span>));<br \/><span class=\"gutter\">  81:<\/span>                        out.<span class=\"syntax6\">writeBytes<\/span>(postData.<span class=\"syntax6\">toString<\/span>());<br \/><span class=\"gutter\">  82:<\/span>                        postData.<span class=\"syntax6\">setLength<\/span>(<span class=\"syntax5\">0<\/span>);<br \/><span class=\"gutter\">  83:<\/span>                        out.<span class=\"syntax6\">flush<\/span>();<br \/><span class=\"gutter\">  84:<\/span>                        out.<span class=\"syntax6\">close<\/span>();<br \/><span class=\"gutterH\">  85:<\/span>                        <span class=\"syntax2\">\/\/<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Read<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">response<\/span><br \/><span class=\"gutter\">  86:<\/span>                        reader <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">LineNumberReader<\/span>(<br \/><span class=\"gutter\">  87:<\/span>                                        <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">BufferedReader<\/span>(<span class=\"syntax8\">new<\/span> <span class=\"syntax6\">InputStreamReader<\/span>(con.<span class=\"syntax6\">getInputStream<\/span>())));<br \/><span class=\"gutter\">  88:<\/span>                        <span class=\"syntax8\">for<\/span> (String line <span class=\"syntax18\">=<\/span> reader.<span class=\"syntax6\">readLine<\/span>(); line <span class=\"syntax18\">!<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>; line <span class=\"syntax18\">=<\/span> reader.<span class=\"syntax6\">readLine<\/span>()) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  89:<\/span>                                System.out.<span class=\"syntax6\">println<\/span>(line);<br \/><span class=\"gutterH\">  90:<\/span>                        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  91:<\/span>                <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">catch<\/span> (MalformedURLException malExp) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  92:<\/span>                        <span class=\"syntax8\">throw<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">IllegalArgumentException<\/span>(malExp.<span class=\"syntax6\">toString<\/span>());<br \/><span class=\"gutter\">  93:<\/span>                <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">catch<\/span> (IOException ioExp) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  94:<\/span>                        <span class=\"syntax8\">throw<\/span> ioExp;<br \/><span class=\"gutterH\">  95:<\/span>                <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">finally<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  96:<\/span>                        <span class=\"syntax8\">try<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  97:<\/span>                                <span class=\"syntax8\">if<\/span> (reader <span class=\"syntax18\">!<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  98:<\/span>                                        reader.<span class=\"syntax6\">close<\/span>();<br \/><span class=\"gutter\">  99:<\/span>                                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutterH\"> 100:<\/span>                        <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">catch<\/span> (IOException ignore) <span class=\"syntax18\">{<\/span><span class=\"syntax18\">}<\/span>;<br \/><span class=\"gutter\"> 101:<\/span>                        <span class=\"syntax8\">try<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 102:<\/span>                                <span class=\"syntax8\">if<\/span> (out <span class=\"syntax18\">!<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 103:<\/span>                                        out.<span class=\"syntax6\">close<\/span>();<br \/><span class=\"gutter\"> 104:<\/span>                                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutterH\"> 105:<\/span>                        <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">catch<\/span> (IOException ignore) <span class=\"syntax18\">{<\/span><span class=\"syntax18\">}<\/span>;<br \/><span class=\"gutter\"> 106:<\/span>                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\"> 107:<\/span>        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\"> 108:<\/span><span class=\"syntax18\">}<\/span><br \/><\/pre>\n<p>Por alguna raz\u00f3n no funcion\u00f3 nunca bien y por ello me decid\u00ed a comenzar un peque\u00f1o peque\u00f1o proyecto llamado &#8216;<span style=\"font-style: italic;\">Pingo<\/span>&#8216;. Con Pingo espero no tener que llamar 3 sitios web (<span style=\"font-style: italic;\">VeneBlogs, Bitacoras, Technorrati<\/span>) para notificar que mi bitacora est\u00e1 actualizada (Blogger no lo hace), sino que todo se har\u00e1 desde un solo programa:<\/p>\n<pre><tt><blockquote>Project Information<br \/>-------------------<br \/><br \/>1. Submitter: josevnz<br \/><br \/>2. Project UNIX Name: pingo<br \/><br \/>3. Project Descriptive Name: Pingo, the Blog manual ping tool<br \/><br \/>4. License: GNU General Public License (GPL)<br \/><br \/>License other:<br \/><br \/>5. Project Description: Pingo is a program that can be used to \"manual<br \/>ping\" Blogs directories that doesn't support such automatic feature.<br \/>Inittial support is planned for VeneBlogs.com, Bitacoras.com and<br \/>Technorati.com<br \/><br \/>6. Registration Description: Pingo is a program that can be used to<br \/>\"manual ping\" Blogs directories that doesn't support such automatic<br \/>feature. Inittial support is planned for VeneBlogs.com, Bitacoras.com and<br \/>Technorati.com.<br \/><br \/>If the project gains interest, then other blog directories will be<br \/>added (for that to happen an extensible arquitecture is planned from the<br \/>beginning, at least for blogs that require communication in plain HTTP or<br \/>XML-RPC).<br \/><br \/>Pingo will use Open Source libraries like Jakarta XML-RPC and will be<br \/>written in Java (Swing for the user interface) in order to guarantee<br \/>that it can be executed on any machine with support for a Java Virtual<br \/>machine.<br \/><br \/>inittial supported languajes are English and Spanish.<br \/><br \/>[end]<\/blockquote><\/tt><\/pre>\n<p>Vamos a ver si me lo aprueban. Por cierto, si est\u00e1 interesado en colaborar, tiene tiempo libre y sabe echar c\u00f3digo entonces sea usted bienvenido :).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ya como hab\u00eda comentando antes en este Blog, les decia que Ethereal puede ser muy \u00fatil no s\u00f3lo con fines de seguridad sino tambi\u00e9n como una herramienta de desarrollo de aplicaciones. Por ejemplo, suponga que usted decide hacer una clase en Java la cual le hace el &#8220;Ping manual&#8221; a VeneBlogs. Dado que a\u00fan no <a class=\"read-more\" href=\"http:\/\/kodegeek.com\/blog\/2005\/03\/27\/echando-codigo-como-automatizar-los-ping-manuales-de-veneblogs-usando-java-y-ethereal\/\">[&hellip;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts\/634"}],"collection":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/comments?post=634"}],"version-history":[{"count":0,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts\/634\/revisions"}],"wp:attachment":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/media?parent=634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/categories?post=634"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/tags?post=634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}