Autor Tema: [TUTORIAL] Bookmarklets, javascript injections, customizando tus paginas  (Leído 6396 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado naruto

  • Trade Count: (21)
  • The Communiter-
  • *
  • Thank You
  • -Given: 751
  • -Receive: 1478
  • Mensajes: 12488
que es un bookmarklet?

http://es.wikipedia.org/wiki/Bookmarklet

Citar
Un bookmarklet es un marcador que, en lugar de apuntar a una dirección URL, hace referencia a una pequeña porción de código JavaScript para ejecutar ciertas tareas automáticamente, como por ejemplo:
Cambiar el diseño de la página (el tamaño de letra o los colores, quitar el fondo, etc.).
Mostrar información de enlaces, imágenes, formularios, etc.).
Abrir una consulta directamente en un motor de búsqueda o acerca del texto que hayamos seleccionado.


ejemplos:

Citar
El ejemplo siguiente busca en la Wikipedia el texto que tengamos seleccionado, si no hemos seleccionado ningún texto nos mostrará un recuadro para introducir una nueva búsqueda. Este bookmarklet funciona en Firefox y Konqueror:


Código: [Seleccionar]
function(){q=document.getSelection();if(!q)q=prompt('De qué estás buscando información?:');
if(q)location.href='http://es.wikipedia.org/w/index.php?search=' escape(q);})()

en chrome, para usar este código, hagan un nuevo bookmark, y anteponganle "javascript:" sin las comillas


vaya, para entender esto, al menos se debe tener un poco de conocimiento de javascript.

Sabian ustedes que los bookmarks en firefox y los Favoritos de Internet Explorer, Chrome y OPERA (no he probado mas) pueden ejecutar javascript?

como asi?

pues javascript puede interactuar con elementos de la pagina en cuestion, es como aquellos trucos que les dicen:
"pongan este código en la barra de direcciones, presionen ENTER y se sorprenderán"
Código: [Seleccionar]
javascript:function Shw(n) {if (self.moveBy) {for (i = 35; i > 0; i--) {for (j = n; j > 0; j--) {self.moveBy(1,i) ;self.moveBy(i,0);self.moveBy(0,-i);self.moveBy(-i,0); } } }} Shw(6)
ahora que ya sabemos que se puede ejecutar codigo javascript "on the fly" podemos aplicarlo a nuestros bookmarks.
Es decir, que nuestro Bookmark se convierta en un boton con un proposito distinto a simplemente cargar una pagina X.

hagamos un ejemplo simple:

Creen un nuevo Bookmark, ponganle de titulo SALUDO y en LOCATION ponganle el codigo a continuacion:
Código: [Seleccionar]
javascript:alert('Hola! actualmente estas viendo: '   document.title   ' en '   document.location.href);• este ejemplo nos saludará y nos dira el titulo de la pagina actual (en foco) y la url de la misma, den click en su nuevo bookmark (SALUDO) y vean que aparece.

Si se fijan pudimos extraer la URL actual del navegador y el titulo de la pagina que esta siendo vista y manipular esa informacion para formar un simple mensaje.

Lo anterior implica que podemos manipular el codigo fuente de la pagina y hacer con ello cosas mas interesantes.

Otro ejemplo es algo para bajar los videos de youtube via Bookmark.

Solo crean una nueva bookmark, le ponen como nombre "YOUTUBE-DL" y en "Location" le ponen lo siguiente:
Citar
javascript:function in2html(txt){if(!txt){return ''}var txthtml=txt.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');return(txthtml);}var backlink=in2html(loc),embmedia=new Array(),filetype='',fileURL=new Array(),found=false,home='http://1024k.de/bookmarklets/video-bookmarklets.html',hometitle='title="Author's homepage"',host=window.location.hostname,iframe,link,loc=window.location.href,logobottom,logobottomimgsrc='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFsAAAAfCAMAAAC/IUHRAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADAUExURb3Lwuru7OXq56m9se3w7szX0JGtm2iWfOHn48bSy6W6rZixotri3dDa0/T29Zy0pX6ijHSchd7l4Nbe2UeJZluQcsjTzPj5 fz9/LLDuTyGYfL084WlksLPx4yqmOvv4/r7 b7QoabAcd/n1PDz6/X38q7FhMzauLfLk9Pewubr6OXr3MbVrSyDW/v8/KzAtPHz8YinlLfHvZaxoLTFu6C3qfn6 ViPcLjIvpuzpJ62p4moldnjyySCWZy6V////wovOL0AAAVRSURBVHjaYrAnCTCycnFzsTISpxgggBhIMlnOFgLkiDIdIIBIMZvXFgFQDRdiYLM1txLTQlUPEEAkmM0INFLKiIeDx0gK6HJkGROYjWIoGgACCGo2Cy8nyFI HiNDW4gLxDk4xBHKtDg5tZhtbdlYIKqBhgshJGUQ3uFCNhsggMBmM4iCxHW5TXThigQgFBuDkJk9oyRMnAWqy8jWlgHF1cxM9uJC/EAGJyciYAACCKTE2BYv4IKzrOztFXQUdeztmYC2wsMaKCEMYcraQtzIA ECBBADxEsCksDYALkTlL7EhfRtbUW5uUUR5rMxgOSBwalpZ2cH1AYUkoaaLQl0NcwedqhyZjMQDyCAGMBeYgUx9fQFhGGKWKC ZxKzsoUFszAfkFCEm21rCUorWpKQoLKxU9K2t diYIC4URBkM0AAMUjowr1kL4EtefAxsyGJI5lta8trzwCiRIFBBRS2gSrRA/ra1hxoOEAAMXBAgk7ZRgUsYaNhZ6ekrgBULS vAPMEkGcD0qlqow00WwkYahy8IANswTHFD5SXB5qtYo8cBZb29gABxAAMf1mQl yUgEapAE0GAQ0FewhLUVMVpFgByJO3V1ACOg4oBrUR7HmwyRD9QErFxgbsRi2wpwACiIHb1pYD4lV5exUlOyhQtIex7DSBdqqDpUGOQ5htz2ILiykFTbAWcEQDNQBFLGxtre0BAgjJbHsFNZCUGtgChDXAcFS1AzsL5Diw2dqKiqBgE4XElIKNEkSZMlSDOlBQxNbWDCCAEGargfSClICtsFFWVLexUUdoUgc7Sx0ooggWlbe35wYnPmUlmBNAUaWpAZEDJi8hgABiMLe1BeZtJZBzNKCRrQyPdBWQJlWwpdpgB4DiEgSUbMBuAyc oLNswAYCCWWwUcBQEQPmXIAAAiUioDKgsA44iBWQzdZWgrBswO4GhYw8xGwdkDILNgZI4tMB65eHEMqQoAcmPwaAAAKaLWgP1mZjD3Gkvb0axFuQ8AMFnjY47aghzAbZLAHOFfJgx8rDzFYEJy9tcPaXBQggoNncEBU2YDPVob5ENhqc MBAzV4REV32MLPVFCBmQxOwmjwk93MABBCy2eA40gHHqDLUaGheg6UaZZjZoBwAdIWNMih47ZR0wHI68DRrzwrMrRIAAYRstio82QFDUBWsCagbnD0VtG0UwbFhA0njYMNBydkGnlghyUlNBZijgRqAZTQLQAABzTaEpAd1e3gCBTnKBm4RNLNAcg04RYDjWE1VEeIiqFc0wUEHdI0ayNfAIowXIIAQ6QRUHkDSqrqCPYrZdvaIbK0CycDgeNWBBpq2DagUUoTGOUQQaC4nQACBikQme1BQKamCSyMbaKGlYKMJC1tgcmUCawR5QAPsCAVFYLiqQNOTPTgEQZLakJwNdBvQWC2AAGIAWmAELudUkMpVWPGtKi8PKQ5BGVBFHiKEUKgqr4pgQkpNFXl5aFmjaw8QQAzA8lAKVg2a8sEKYDYW1DYCqKxEKuH5kOQs2LkYMESBzpa0BwggBns5WL0CKtPZYBUHkCXGBPMFsIa31dcDVYhg2/X02WWZ7JmY cA1B0gxWJiFTU4YpMheWlgO3IIBCCAGcLMDWh9iAEFubkS1acgtAhYyRJIWRDBFoYrAqkDFtz1AADGgNJd0YRW1pC6qJcx42gEMnJhiUkCj7QECCBRU0PYHqO4HtnGgDQwtTrhPBCSF7HnAzrHmAtXkItw8QDk2MJudC9gIYgIzBSR5IW4W1OcFBzJAADEg2k1Y6mEDDg5E84qRQw8sxIgkbYBgikMVgVWBAUCAAQCu9UfS1XOUCQAAAABJRU5ErkJggg==',logotop,logotopimgsrc='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAABOCAMAAACNDREzAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADAUExURfn4966ml9Pe0cDSvYuHdbrMtk9GMXVlQenp47mkeMTVwol4Ui0nF8azjc/bzODk3JaRghYRCKqVaXFpV9rX0cnFwJeEW7KdcWBZSauSYcnZx3x1ZLKaaoBvTL 4r6ObjGZZOayYbUQ6KDgwIKGKW2liU4J6a9bh1KWRZ8bXxNHNyaeTaKmYdW9gO626pJmjjbSxqFlQPqGOY2tfRriuph4ZEMrUwfLx7459WKSvmrPBq7uyqXZuXtfi1QYGBP///64HO4MAAA0dSURBVHjaYrCnCQAIIAYYrSbPQEVjAQIIZpaanamAOfWMBQggmLFsdnYCVHQuQADBjJKTUJajYiAABBDcheaWbCLUMxYggBAeN1eiYigABBCSSWqG1HMuQAAhGSvCQz3nAgQQskFyPJbUMhYggJCNZVClWqwBBBCKt1nsJKhkLkAAoRhrYGrHQp3gBQggFFP42eyUtKhiLEAAoRjLIG1HJecCBBCqIXI8dkqiUAl fg5zBgYGewYOWBHEQLyNAAGEplLA1E6Cw95cRI6RxdBQwlACCAyVlNlshNUY5UQZBUxM5K1F5US1tES1 OFFKgigGwsQQGgC/Kp2yqIMwOIMDkztTJV5TE3t7ARNeYCEoLKSKY ysjKPshKbIZuEgJy1PKOJtbWcNSOjPKMo3C6AAEK3R97UTo3Fzo6HnV1BV9aCm1tMzMJCRUhRUZwTDDR0WGRVDQ1VVSXY2AyVeXhMlQWBNgPtUFI2FQRSNqIQAwECCN1YUWWgCyXsDDlhQBwGZGRkgGbz8srxAgFESlFRW0NIg8VIjFtWVk3YWNWQx84GEhEAAYRurIgE0KksdobiRiqSECAkBGWoqBhpSAIdDgYgi8B2gmwCAjmwbSyCwhBjAQIIzVg5Qzs7NjFDOyVFIZixIEOgTBkhSRlOBBBX1BbS1tAWAgGQPZy83IJqEAMBAgjVWEZTkKlibHZsihpw1wI1AE0WAgWCuJAKKLBlubm5ZblVgHwZbbC7QfKg4Ge3E4YYCBBAyMZyCADjms1CzAJoLCcskoBuAmsDsoQsZA2VeAQFgbEEQjzAtGCoYKEtJqYDVgHUIQtzLUAAIRnLYQNKAUDXiCnZsckAHWVhIWakATIPrMWInQ1oK9A0ZWC8A2Oex1TQDmK4gqysBkiNIqewILTIBgggBqRiBmwmyDCgsZyGpsIShsqmwMygpMzNySkmqwRMSYY2agKWegasQGAFTKgCLMJKpnaChrIKCkbiIKuFYa4FCCB4zatsKiENMRVkrBKngp0wC6MNj5yajYSpBaeskqCdsrS GZ UlKYmFzMrMzOzppSZFJ UHKOAjbIStyy7oriQoowCzFiAAIIayyFhJyxgAQViykBjde2UTNWEpRkF5JVMxTWUlQ2lLZm5WEHmwQHQzcxcmrYcjEo8FmJi4traigp2UGMBAghqrIiSnZoAN6qxhqbgzKtkx8OpoCRvBTOSi0sTCLi4wDQXFzMXE7 lMo FETCxAY2VhhgIEEAMsJLWlIUFxbXAtMLIqMbIIqwG5PCwMGvC3MglxQcEwLCQAgYICGtK8QkIKgMTNZKxAAGECAS4qSBj2YDGGhuwmIoKMErbyXKaMkqBnAc2VhNoKBMQgAg YOjyaTJLWbGZisloCynqwgIBIIBgxqraqYFMBGZuuLHKwEBQApaJdkYypoxAz0KBFNRYILAFGgx0N5cmq42goYaGtji7oDzEPIAAQjGWW9ZCFuRaU2C6ZbczlADWQXZKwnZCnKbymsDIAftZCm6sLQiBAkRTk1mAR1lMQ0iR3ZQRYh5AAKG6FuhYIBDjARora8cjJwBMYqKGpuKKSpbgqAI6jUuKCQnY2jIBrZHiYtaXUOIG5l8FWJ0FEEAwY4XtbMTgxpraKQGNNZUTUBOwEWUz5bRgYwW6Fux9TU0 sHEgV4IdDbSIj4vZUlVZFlg GMOiDCCAoMaaS9ipCkBNlZWFGAupHASUTGVk2YAJQROSAvhAhtqCfA8OAFDYAiPN0kZZVxFoLCxsAQIIZqwNsrE8dgogYyXYgDmfhcdUhl3CDJQCwEZBQxVsOCjGQMZKAV3Lww5MCgqCBhDzAAIIZqyqnbAYzFRg9jeU4QYFgoCAPCMPm6ShqhkX0LWQRAUNVAQAGs1sKWHKDnKtKdRYgABCBII0iyzCWDYZC6ixAqbcKmwSVqBsBTWUD9VUfiaQayVMFYDGwhMYQABBjWUQtjO2gBurbKcMNFbJkIfN0MbGTkxSVkkfmG41 bCZCjFWT5jHGJzLBCDmAQQQrAQTsDNENtZQUsxOyYYNGLqGdkbi3Dz6mqxcUlBjbW3RjNUEGiutxC4kZKQMMxYggGDGigKrBYiZ7LKywGwAMlZOTV5A3sbOiBNkLLQsAEYSspH8/EBjuTS59KSVFYSEgAkeGggAAQQvxnl4EK41tOMBGmvKAiy1WSTsxDgteFg0IcmWj48LYiw/BwcHGPNDjFVTVtAWUgEaCzEQIIDgxhqaIoxVABvLYwhKuDxAY2WVEcbyMcFM5YCYCjbWSk3ZUFsRaCwjpEIHCCAkY4Hpi50dEg5AYy3slA2AgcCiDDSWXZkFViBC4wtqLD8oHNSBZQLQWDZtcYSxAAGEMNZOGmQsO4jQBRqrAjFWQAlorK4yC6gekAKbyo8wlh8cvLbAQsFKjYdNCGSsPAfYNIAAghuraieLbKyKjJ0yi4SajRob0FhDsLGgogbZWLBTQZHGxAcyVkFc3ALYmocYCxBADIh AzvcWGDGVZG0A7UQge0GiLFWIGMhzgWayQ93KpDFDzGWXVyc29ROlh9sGkAAwY2VxzDWzsAOWEEq2FlwKqAaC3QwyJEQx3JwgFyrJ80jC3atNMS1AAGEZKwC3FigrWIyIGOB6VbVjhsatoiKAVLeQIKAA8RntpI2RTEWIICQjDUEmYpkrJKNnbKSoTDQWHaQscywSAOZA00R/LbgwkyKVU/azlgGZKwaB9hEgACCG8toxwY2lh1kLA/Q56bKEnbANpGNHTsoO7BCKl1NSA4GtkL4mMDhAColpbhY9VRNLRRBKcEGYixAACEZqwwxlh3sWm5OU1N5aWABBoxKTklTAWhdrgmsdGwhVS4kTYDqHT4uVksJYNNVUVsJ1l8ECCCEsaY87HBjeYCVOI dgICaNIuaHTDlmLKAWjDAUOCCFDjQMIYUDCBj5dkMgY0aIWBBDTEWIIDgxsqZIlwLrB64OZUhtQ4wJBQ5edgsIYELrtL5wGEAL86BMcaqzyMBNFZD2U4Y0isBCCC4sVqmynDXAstxdqCxhiwscqbSpspCnMpK qDmHLypADbWFhQc6lBjlYGlOChsDbXAJgIEEC5jjWWAbWcBaQNTFmVlI04lHhsrZoSx0KAAJzR1YJQxs8oDk622uAWwJQDp6gAEEANikMJUV1cXbqySiqwpqFljJ63MI8ZpzGNogNxWhLpYClIZc1mx2phyK2qAjDWEGAsQQAhjle0UdBUUFHQhxppaaCibAnODqQCwxBQHplxhVi5w2xNmLMhgENZkZtWzslRmE9MGG2ssAjYRIIDg3T4OJYixCuy6CuzAlje3DDC1qKoJCxgCUwUnp7GyhCUrq6UBCICateBmExfQElY9SwEWQyV2RSGwsTaQKAMIILhrOSRMDcHGgkwGGgtMYaaqbMaGbIbAFAbsQFiwKQM7wYbGoG6whKq0GguLgJoai4C voAwGw PArDbpyEOrHSguQwggBBdEmFTBVmouexsIGOVTYEdUCU2YIoQB3V0FNlMgb1QIOYBkjwgyhTUH2UDdlGVbMTFjYDGAlOCmjnYRIAAQhirCmx4AwMWHL4g18qw8YCb43Y8sjLADp MuKQYt5ERsD0JbKvp6hoCARuoQ61kKGuhAez4aWgYAfsCsNoBIIAgZjOYm9tLgFv0CiCDddnsTLklgd06BTZQFFoA 6cqwK6pDLz/C 6fgrp YipGQsCeJASI6/AoQZKtPUAAMYAGJJhEgEBVmcUG6DxlYJzpAqteCyNgLxHY3QUTkkYqIHPBnUpIxw7cyQYbDvS9EagLCeycagjChqYAAojB3lxECwhEgS0jOTl5G2WQk9kVTE1ljcSg3VOwkSCHQYwGGQIykxNsJpCjqCFkBOqxygLbFIaQ4tYeIIAY7DlApmrJGRjIGcjJyTEaA12syw40VkgF5kIVFUmImRDjxUCNdmDIKoFGK4BxBowDSCwAsw 0UWMPEEBA14IdawAyFojlDOSllU2VTIFdPA1gN19IBdhGNxLSlQW1JoGhzgbqVAL7m8jDI8BEATJfSVWVzU4N2EoEhS5AAIECQRRiLBQATQYpllBTVTBUUFDiAQEkU0DpSwnUiTaUEBZWlWYBNlWBwACIREUYTVX5zTlAQ0YAAcRgzyAiCgJySAazKNshA1MeNjYJY0Ng0wnY5ZUHAUYYgDsFCAxEDdQE5LSALR1ze4AAArqYA2ws0MFyMKPlDFRBfSc2YRYbG2Bukpc3gJoCDHu4aUjuALHBJovKyYkAa3p BoAAAgWEFshUYFpAmCsqb6okCrRHVA4KDAxg5oF1A2MDmCS1wM4Bs2GEFqQ2tgcIIJCx5kyiUAAzV07e0AakSQ4moQUD/OYgwAABYJY5PKMywCTs7QECCCzGAdIHsg1kLtR9EFdAAT/EEUBA5MAdQAChjN8yacGNARkBdhd5Y4wAAYSijQPsLpB5lI5fAgQQ6ogo5eZBAUAAUXMiBwkABBgAk/EvcGbprtcAAAAASUVORK5CYII=',mediahost=false,scriptmedia=new Array(),source,urlend,urlstart,urlstra='<div class="filelink"><a href="',urlstrb='" title="Download video from ',urlstrc='">Download link</a> ',urlstrd='</div>Right-click -&gt; "Save Target As"',videoid,xmlhttp=false,xmlhttp_url=false,xmlobject;function rev(str){if(!str){return ''}var revstr='';for(i=str.length-1;i>=0;i--){revstr =str.charAt(i)}return revstr;}function xmlhttp_request(){if(window.XMLHttpRequest){try{xmlhttp=new XMLHttpRequest();}catch(e){xmlhttp=false;}}return xmlhttp;}function outputxhtml(){if(fileURL.length!==0){if(logotopimgsrc!==false){logotop='<a href="' backlink '" title="(back to ' mediahost ')"><img alt="" class="logoimgtop" src="' logotopimgsrc '" /></a>';}else{logotop='';}if(logobottomimgsrc!==false){logobottom='<a href="' home '" ' hometitle '><img alt="" class="logoimgbottom" src="' logobottomimgsrc '" /></a>';}else{logobottom='';}link=fileURL.join('</li><li>');document.write('<?xml version="1.0" encoding="ISO-8859-15"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"></meta><title>Video Download, ' host '</title><style type="text/css"><!--body { margin:0;padding:0 11px;background-color:#818181;font:normal 12px arial,helvetica,sans-serif; }.pagebox { background-color:#FFFFFF;position:relative;min-width:458px;max-width:505px;margin:34px auto;padding:34px;border:1px solid #696969;-moz-border-radius:10px; }h1, h2 { border-bottom:1px solid #C8C8C8; }h1 { margin:0 15px 10px 75px;font-size:18px; }h2 { margin:0 15px 0 75px;padding:2px 15px 15px 0;font-weight:normal;font-size:15px; }ul { margin:12px 15px 5px 93px;padding:0;list-style:square; }.filelink { width:175px;float:left; }.backlink { margin:15px 15px 0 75px;padding:15px 15px 2px 0;border-top:1px solid #C8C8C8; }.link { position:absolute;right:10px;bottom:-22px;}a.linktext { font-weight:normal;font-size:11px;color:#4B4B4B;text-decoration:none; }.logotop { position:absolute;left:11px;top:28px;}.logoimgtop { width:86px;height78px;border:none; }.logobottom { position:absolute;right:10px;bottom:8px;}.logoimgbottom { width:91px;height31px;border:none; }.donation { width:69px;height38px;border:none;position:absolute;left:21px;top:118px; }--></style></head><body id="all-in-one-video-bookmarklet"><div class="pagebox"><div class="logotop">' logotop '</div><h1>Video Download, ' host '</h1><h2>The following media has been found on the <span class="em">' mediahost '</span> website.</h2><ul><li>' link '</li></ul><p class="backlink">Return to <a href="' backlink '" title="(back to ' mediahost ')">' mediahost '</a> website</p><div class="link"><a class="linktext" href="' home '" ' hometitle '>(script by 1024k.de)</a></div><div class="donation"><form action="https://www.paypal.com/cgi-bin/webscr" method="post"><div><input type="hidden" name="cmd" value="_s-xclick" /><input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHbwYJKoZIhvcNAQcEoIIHYDCCB1wCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYCekZyYz9kXtChhfaegGoEby/tmMHl6b9yhg5s5iNBbnDWO8jCryDyS7JtIuHOr75xomvSSrXCbkjGbpN8R1ZL1GL3rZeLMryDDoID3fMwdqMYjpci/K5MeWF31jFFRu/7vAeMGQBPsQyrzIFjID0Uur G2pv1jsITlO/IlKNR5QzELMAkGBSsOAwIaBQAwgewGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIF83h8MS89LmAgchENkJBb9GxkI1ss65w4gfknhhUk3 x5q1y0GcHR676eF6ikgFv KMLyLeNzVGwxn5C2xUr1JjaEMI4Tw3WvHtPjGdp//oBPWXfdxR5voeybNjpk1ncODeeSWODpslwrVpcybjxVgDzuMjuAW/Ml 4bAfjuwzeeS6zGp1qMIjiaGqOZhevCsoMzN1WVrQJtB4QBbGE8HkNllUAxj2IxkKHiKis6LYWlstkna/E8qgsi 5CazF707CQf4QpzRVrw7TvD0iTItYriIqCCA4cwggODMIIC7KADAgECAgEAMA0GCSqGSIb3DQEBBQUAMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTAeFw0wNDAyMTMxMDEzMTVaFw0zNTAyMTMxMDEzMTVaMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwUdO3fxEzEtcnI7ZKZL412XvZPugoni7i7D7prCe0AtaHTc97CYgm7NsAtJyxNLixmhLV8pyIEaiHXWAh8fPKW R017 EmXrr9EaquPmsVvTywAAE1PMNOKqo2kl4Gxiz9zZqIajOm1fZGWcGS0f5JQ2kBqNbvbg2/Za GJ/qwUCAwEAAaOB7jCB6zAdBgNVHQ4EFgQUlp98u8ZvF71ZP1LXChvsENZklGswgbsGA1UdIwSBszCBsIAUlp98u8ZvF71ZP1LXChvsENZklGuhgZSkgZEwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAgV86VpqAWuXvX6Oro4qJ1tYVIT5DgWpE692Ag422H7yRIr/9j/iKG4Thia/Oflx4TdL IFJBAyPK9v6zZNZtBgPBynXb048hsP16l2vi0k5Q2JKiPDsEfBhGI HnxLXEaUWAcVfCsQFvd2A1sxRr67ip5y2wwBelUecP3AjJ YcxggGaMIIBlgIBATCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTA2MDUwNzAyMDIwN1owIwYJKoZIhvcNAQkEMRYEFKjnbaP3QsS11LPmbMBzo6tXSEbaMA0GCSqGSIb3DQEBAQUABIGAA0YNnXb7IIWevF6vqVHXZ0HuPESp2us85qqQpNIFw8FNaCpXtyIloRBKhKyz08zt8XI7UyMc1QicUir1r 6/Ds1dS92xRw60jlbw wnYyXtD/hhU0B3APlcVTcGC9VeR9aPYAjeiTpRMokw79BugM2xPMMhosp12eBDmzv3BrK4=-----END PKCS7-----" /><input type="image" src="data:image/gif;base64,R0lGODlhRQAmAMQfANXV2NRNKmFgYlBojens8QAEO/6fE/Xy8qGwwv/63OO6t9ng5vutNa7B14eVrtiYk/bk0P7GUPnSlT5ARZaWl8rKzerp6YOAgMYEA6WkpP6NAfr6 gMWThEQEP///////yH5BAEAAB8ALAAAAABFACYAAAX/4CeOZGmeaKquplVlcCzPdG3fuIxYZSVQuaBweBN0MiOLYOFpOp/QqHRKrUYBnYUoQ7F6v2Dv4SeidD2ctHrNbrs504Pi8VBAoAeIRAJJQC0AAhdlZxwNBwSJiouMjYkHCHB4DwEYlhgBDwceGxIMBhqhDBIbToCChE0cFQMFb69rBQMAkk4QlZe5ARARob6 Bncep4MfZqqsBcrLzM3OyrO1w7nUlgEBv9kad8SpaA0IEwPj5OXm5xMIDbUbuNXW16DaoQYb3caFCJwbBBYb/xYOCOQX8B /AwY9RHKi4N27APLmSbh3DI2 JpEceHDAYcEEBwvUVNjIYUApjLXc/z28dk2DAQbzIlDM5 RASQIFHDQosK6jg35pJmxC2eQAhjkPLFzDFEABS0xJFUSI8JJBBAUTAxWryOEip48DOBwIO7bAhSYDPk4g4GShh4YAKgBQQGEBAAgXFjywm2FBAwYB6iqosKACAQYzVXndEDYnmgGcHJi1wMFBJCZE32IA0GDuAwAXMgBo2mBJUwMGKjTQewsAYq3euj5pxWFDBZ4OHNAacMFVGgBtJR2gMEdBAwV6EdglHqACBgcWOhN kMEChNeo8Cl wnEkx7FpBlT4CGlVcCcXdAUQUKlSBsDYLmi4QF9DgAsBZMLWbnHfv03/NUHAAqWwVVRCbmnmEP882IASkUuhZJUdVw30gtpLF35SFWoaYghKBOs40c6C8MzjCwP27EdhLya2mA2I0lhAoiUQzmPAJol9w6KLPML4h0rUSGUiYpzkyAEAGySg5JJMNumkkhuEOIlKmQDoiTwvkWKKioXA4qUbU9ijgB0niZgHBAj9wWUYbLb5RY5uxilnE3BS0cGddzqBZwdN5OmBn3/yGeiegwIqRZ1T JnnoozyqSieegoa6JtrWvHopJNCqmifkXbqBaJSXCrqnoIS2qekpFYBahSjnprpo4DGKqmqlVbR6quDYnqpq5/WaqephfLKqLCoAnuor3MmC8Y99BVpwbPQRivttNRWa 1HtdBWEE4xFXQAQGEVhCvuuOSWa 656KYrLhcdVFCGEfTFK  89NZr77340mtEdltM4O /AAcs8MAEF2ywwEiwoPDCDDf8QQgAOw==" name="submit" alt="" title="Thank you for your support!" /></div></form></div><div class="logobottom">' logobottom '</div></div></body></html>');document.close();}else{alert('No video file has been found.');}}function extracturls(){if(host.match(/break./i)!=null){mediahost='Break.com'}else if(host.match(/clipfish.de/i)!=null){mediahost='Clipfish'}else if(host.match(/dailymotion./i)!=null){mediahost='Dailymotion'}else if(host.match(/google./i)!=null){mediahost='Google'}else if(host.match(/metacafe./i)!=null){mediahost='Metacafe'}else if(host.match(/myspace./i)!=null){mediahost='Myspace'}else if(host.match(/myvideo./i)!=null){mediahost='MyVideo'}else if(host.match(/putfile./i)!=null){mediahost='Putfile'}else if(host.match(/sevenload./i)!=null){mediahost='Sevenload'}else if(host.match(/youtube./i)!=null){mediahost='YouTube'}switch(mediahost){case'Break.com':embmedia=document.getElementById('break_player');if(embmedia!=null){source=unescape(embmedia.getAttribute('flashvars'));if(source.match(/videoPath=/i)!==null){urlstart=source.indexOf('videoPath=') 10;urlend=source.indexOf('.flv',urlstart) 4;source=in2html(source.substring(urlstart,urlend));filetype='(.flv)';fileURL[fileURL.length]=urlstra source urlstrb mediahost urlstrc filetype urlstrd;source=source.replace(/.flv/,'.wmv');filetype='(.wmv)';fileURL[fileURL.length]=urlstra source urlstrb mediahost urlstrc filetype urlstrd;}}outputxhtml();break;case'Clipfish':embmedia=document.getElementsByTagName('embed');if(embmedia.length==0){outputxhtml();}for(i=0;i<embmedia.length;  i){if(embmedia.getAttribute('src')!==null){videoid=unescape(embmedia.getAttribute('src'));if(videoid.indexOf('videoid=')!=-1){found=true;urlstart=videoid.indexOf('videoid=') 8;if(videoid.indexOf('&',urlstart)!=-1){urlend=videoid.indexOf('&',urlstart);}else{urlend=videoid.length;}videoid=videoid.substring(urlstart,urlend);xmlhttp_url='http://' host '/video_n.php?videoid=' videoid;xmlhttp_request();if(xmlhttp!==false){function clipfish_xmlhttp_response(){if((xmlhttp.readyState==4)&&(xmlhttp.status==200)){xmlobject=xmlhttp.responseText;source=in2html(xmlobject.substring(xmlobject.indexOf('&url=') 5,xmlobject.indexOf('.flv') 4));filetype='(.flv)';if(source!=''){fileURL[fileURL.length]=urlstra source urlstrb mediahost urlstrc filetype urlstrd;}outputxhtml();}}xmlhttp.onreadystatechange=clipfish_xmlhttp_response;xmlhttp.open("GET",xmlhttp_url,true);xmlhttp.send(null);}break;}}if((i==(embmedia.length-1))&&(found!==true)){outputxhtml();}}break;case'Dailymotion':embmedia=document.getElementsByTagName('embed');for(i=0;i<embmedia.length;  i){if(embmedia.getAttribute('flashvars')!==null){source=unescape(embmedia.getAttribute('flashvars'));urlstart=source.indexOf('url=') 4;urlend=source.indexOf('&',urlstart);source=in2html(source.substring(urlstart,urlend));filetype='(.flv)';fileURL[fileURL.length]=urlstra source urlstrb mediahost urlstrc filetype urlstrd;break;}}outputxhtml();break;case'Google':iframe=document.getElementById("3rdPartyFrame");if((iframe!=null)&&(iframe.src.match(/google./i)!==null)){embmedia=iframe.contentDocument.getElementsByTagName('embed');for(i=0;i<embmedia.length;  i){source=unescape(embmedia.getAttribute('src'));if(source.indexOf('videoUrl=')!=-1){source=in2html(source.substr(source.indexOf('videoUrl=') 9));filetype='(.flv)';fileURL[fileURL.length]=urlstra source urlstrb mediahost urlstrc filetype urlstrd;break;}}if(iframe.contentDocument.getElementById('macdownloadlink')!==null){source=in2html(iframe.contentDocument.getElementById('macdownloadlink').href);filetype='(.avi)';fileURL[fileURL.length]=urlstra source urlstrb mediahost urlstrc filetype urlstrd;}if(iframe.contentDocument.getElementById('ipoddownloadlink')!==null){source=in2html(iframe.contentDocument.getElementById('ipoddownloadlink').href);filetype='(.mp4) (iPod)';fileURL[fileURL.length]=urlstra source urlstrb mediahost urlstrc filetype urlstrd;}if(iframe.contentDocument.getElementById('pspdownloadlink')!==null){source=in2html(iframe.contentDocument.getElementById('pspdownloadlink').href);filetype='(.mp4) (PSP)';fileURL[fileURL.length]=urlstra source urlstrb mediahost urlstrc filetype urlstrd;}outputxhtml();}else if((iframe!=null)&&(iframe.src.match(/.*./i))!==null){alert('Please remove the Google frame to download from external websites.')}else outputxhtml();break;case'Metacafe':scriptmedia=document.getElementsByTagName('script');for(i=0;i<scriptmedia.length;  i){if(scriptmedia.text.match(/itemID=[0-9] /i)!==null){found=true;xmlhttp_url=scriptmedia.text.match(/itemID=[0-9] /i);xmlhttp_url='http://' host '/fplayer.php?itemID=' String(xmlhttp_url).match(/[0-9] /i) '&t=embedded';xmlhttp_request();if(xmlhttp!==false){function metacafe_xmlhttp_response(){if((xmlhttp.readyState==4)&&(xmlhttp.status==200)){xmlobject=(new DOMParser()).parseFromString(xmlhttp.responseText,"application/xml");source=in2html(xmlobject.getElementsByTagName('playlist')[0].childNodes[1].getAttribute('url'));filetype='(.flv)';if(source!=''){fileURL[fileURL.length]=urlstra source urlstrb mediahost urlstrc filetype urlstrd;}outputxhtml();}}xmlhttp.onreadystatechange=metacafe_xmlhttp_response;xmlhttp.open("GET",xmlhttp_url,true);xmlhttp.send(null);}break;}if((i==(scriptmedia.length-1))&&(found!==true)){embmedia=document.getElementsByTagName('embed');for(j=0;j<embmedia.length;  j){if(embmedia[j].getAttribute('src')!==false){source=unescape(embmedia[j].getAttribute('src'));source=in2html(source.substring(73,source.indexOf('&')));fileURL[fileURL.length]=urlstra source urlstrb mediahost urlstrc filetype urlstrd;break;}}outputxhtml();}}break;case'Myspace':if(loc.match(/videoID=/i)!==null){videoid=loc.match(/videoID=[0-9] /i)[0].substr(8);source=in2html('http://content.movies.myspace.com/' Math.pow(10,7-(videoid.length-5)).toString().substr(1) videoid.substr(0,videoid.length-5) '/' rev(videoid.substring(videoid.length-2)) '/' rev(videoid.substring(videoid.length-4,videoid.length-2)) '/' videoid '.flv');filetype='(.flv)';fileURL[fileURL.length]=urlstra source urlstrb mediahost urlstrc filetype urlstrd;}outputxhtml();break;case'MyVideo':embmedia=document.getElementById('MFP_10');if(embmedia!=null){if(embmedia.getAttribute('flashvars')!==null){source=unescape(embmedia.getAttribute('flashvars'));if(source.match(/videoid=/i)!==null){videoid=source.substring(source.indexOf('videoid=') 8,source.indexOf('&',source.indexOf('videoid=') 8));embmedia=document.getElementsByTagName('a');for(i=0;i<embmedia.length;  i){if(embmedia.getAttribute('onclick')!==null){source=unescape(embmedia.getAttribute('onclick'));urlstart=source.indexOf('http');urlend=source.indexOf('/thumbs',urlstart) 1;source=in2html(source.substring(urlstart,urlend) videoid '.flv');filetype='(.flv)';fileURL[fileURL.length]=urlstra source urlstrb mediahost urlstrc filetype urlstrd;break;}}}}}outputxhtml();break;case'Putfile':embmedia=document.getElementById('flvplayer');if(embmedia!==null){if(embmedia.getAttribute('flashvars')!==null){source=unescape(embmedia.getAttribute('flashvars'));urlstart=source.indexOf('flv=') 4;urlend=source.indexOf('.flv',urlstart) 4;if((urlstart!==-1)&&(urlend!==-1)){source=in2html(source.substring(urlstart,urlend));filetype='(.flv)';fileURL[fileURL.length]=urlstra source urlstrb mediahost urlstrc filetype urlstrd;}}}else{embmedia=document.getElementsByTagName('embed');for(i=0;i<embmedia.length;  i){if(embmedia.getAttribute('src')!==null){source=unescape(embmedia.getAttribute('src'));fileURL[fileURL.length]=urlstra source urlstrb mediahost urlstrc filetype urlstrd;break;}}}outputxhtml();break;case'Sevenload':scriptmedia=document.getElementsByTagName('script');if(scriptmedia.length==0){outputxhtml();}for(i=0;i<scriptmedia.length;  i){videoid=scriptmedia.text.match(/var ids*= '(.*)'/gi);if((videoid!==null)&&(RegExp.$1!=='')){found=true;xmlhttp_url='http://' host '/api/player/id/' RegExp.$1;xmlhttp_request();if(xmlhttp!==false){function sevenload_xmlhttp_response(){if((xmlhttp.readyState==4)&&(xmlhttp.status==200)){xmlobject=xmlhttp.responseXML;source=in2html(xmlobject.getElementsByTagName('video')[0].getAttribute('url'));filetype='(.flv)';if(source!=''){fileURL[fileURL.length]=urlstra source urlstrb mediahost urlstrc filetype urlstrd;}outputxhtml();}}xmlhttp.onreadystatechange=sevenload_xmlhttp_response;xmlhttp.open("GET",xmlhttp_url,true);xmlhttp.send(null);}break;}if((i==(scriptmedia.length-1))&&(found!==true)){outputxhtml();}}break;case'YouTube':scriptmedia=document.getElementsByTagName('script');for(i=0;i<scriptmedia.length;  i){if(scriptmedia.text.match(/(x22video_idx22: x22S x22. x22tx22: x22S x22)|(x22tx22: x22S x22. x22video_idx22: x22S x22)/i)!==null){source=scriptmedia.text.match(/(x22video_idx22: x22S x22. x22tx22: x22S x22)|(x22tx22: x22S x22. x22video_idx22: x22S x22)/i);source=in2html(String(source).replace(/(?:(?:x22video_idx22: x22(S )x22. x22tx22: x22(S )x22)|(?:x22tx22: x22(S )x22. x22video_idx22: x22(S )x22))/i,'http://www.youtube.com/get_video?video_id=$1 $4&t=$2 $3'));filetype='(.flv)';fileURL[fileURL.length]=urlstra source urlstrb mediahost urlstrc filetype urlstrd;filetype='(.mp4)';fileURL[fileURL.length]=urlstra source '&amp;fmt=18' urlstrb mediahost urlstrc filetype urlstrd;break;}}outputxhtml();break;default:alert('This site is not supported.');break;}}extracturls();


ahora vayan a ver un video de youtube, le dan click a su nueva bookmark (YOUTUBE-DL) y veran que aparece una nueva ventana, formateada y con estilo para bajar el video que estan viendo.
OJO! esto no es una nueva pagina que esté alojada en algun otro lugar, es todo generado al momento, las imagenes van codificadas en el mismo bookmark en forma de codigo ascii, asi que ahi en todo ese codigo van las imagenes que ven en la pantalla de descarga.

Estas solo son algunos ejemplos de todo lo que se puede hacer, esta es una forma simple de hacer las cosas, existen ayudas extras como USER SCRIPTS y GreasyMonkey que hacen lo mismo, lo que se describe aqui es una alternativa simple y sin instalar nada.

Espero les haya parecido interesante
Follow members gave a thank to your post:
« Última Modificación: Julio 18, 2012, 03:27:41 pm por naruto »

Desconectado minchio

  • Trade Count: (31)
  • The Communiter-
  • *
  • Thank You
  • -Given: 1
  • -Receive: 4
  • Mensajes: 2139
  • Damn! you´s Sexy Bitch!
OMG!

todos los codigos q has puesto funcionan a la perfeccion :thumbsup:

Desconectado Red Admin

  • Administrator
  • Trade Count: (5)
  • The Communiter-
  • *
  • Thank You
  • -Given: 117
  • -Receive: 74
  • Mensajes: 10226
  • Vendo nanosuit barato, poco uso
buen tip, no sabia lo de ejecutar javascript directamente de la barra de direcciones.

ya que hablamos de greasemonkey y bajar videos, les dejo el siguiente tip para el youtube, si tienen:

 firefox + extension greasemonkey + script youtube enhancer

- pueden descargar el video en la maxima resolucion posible
- tambien pueden evitar el autoplay cuando ven videos de youtube.
- oscurecer la ventana de visualizacion y varias extras mas

Desconectado naruto

  • Trade Count: (21)
  • The Communiter-
  • *
  • Thank You
  • -Given: 751
  • -Receive: 1478
  • Mensajes: 12488
ahora les vengo a compartir uno que hice hace poco, lo que hace es que te permite abrir la URL que tenes activa en ese momento usando un webproxy

Utilidad? si tenes bloqueadas algunas páginas en tu trabajo y no quieres estar copy/paste'ing las direcciones en el formulario del webproxy.
tambien es útil para cuando te bloquea youtube el video por ser indito.

éste código hace uso de la url
http://www.greenpass.info/includes/process.php?action=update

y envia la variable "u" con la url en ella.

aqui esta el código:
Código: [Seleccionar]
javascript:
postwith("http://www.greenpass.info/includes/process.php?action=update", {u:document.location.href});
 function postwith (to,p) {
var myForm = document.createElement("form");
 myForm.method="post" ;
 myForm.action = to ;
 for (var k in p) {
var myInput = document.createElement("input") ;
 myInput.setAttribute("name", k) ;
 myInput.setAttribute("value", p[k]);
 myForm.appendChild(myInput) ;
 }
document.body.appendChild(myForm) ;
 myForm.submit() ;
 document.body.removeChild(myForm) ;
 }

si se desea cambiar de proxy, habría que tomar las siguientes consideraciónes:
- que el proxy acepte hotlinking
- averiguar la direccion a donde se hace el post de la url
- la(s) variable(s) que se envian al hacer el post

la idea es simular un post desde la propia pagina de proxy.

pruebenlo y me cuentan
Follow members gave a thank to your post:
« Última Modificación: Octubre 21, 2011, 08:19:41 am por naruto »

Desconectado naruto

  • Trade Count: (21)
  • The Communiter-
  • *
  • Thank You
  • -Given: 751
  • -Receive: 1478
  • Mensajes: 12488
babosiando con jquery se me ocurrió mejorar un poco un aspecto de DX que a mi me parece util

es que cuando estas viendo la lista de articulos, si queres ver mas grande la imagen, toca meterse al artículo
entonces hice un código para que al pasar el mouse sobre el producto me de un preview en mayor tamaño del producto sin tener que
cargar la siguiente página, apues aqui se los dejo.

les aconsejo lo usen con la extensión de Chrome que se llama Javascript Injector:
https://chrome.google.com/webstore/detail/abdogfafejmdomllalkdegagoehgbdbk



en la configuración del injector en DX en url poner:

http://www.dealextreme.com/(.*)

Código: [Seleccionar]
//Select all anchor tag with rel set to tooltip
    $('.productthumbnail').mouseover(function(e) {
         
         
        //Remove the title attribute's to avoid the native tooltip from the browser
       
         
        //Append the tooltip template and its value
        $(this).after('<div id="tooltip" style="border:1px solid;position:absolute;z-index:1000;"><img src="'+$(this).attr("src").replace("_small","")+'"></div>');     
         

        //Set the X and Y axis of the tooltip
        $('#tooltip').css('top', mouseY+200 );
        $('#tooltip').css('left', mouseX );

             
    }).mousemove(function(e) {
     var position = $(this).position();
        //Keep changing the X and Y axis for the tooltip, thus, the tooltip move along with the mouse
        mouseX = position.left;
        mouseY = position.top;
         
    }).mouseout(function() {
     
        //Put back the title attribute's value
             
        //Remove the appended tooltip template
        $('#tooltip').remove();
         
    });

Desconectado naruto

  • Trade Count: (21)
  • The Communiter-
  • *
  • Thank You
  • -Given: 751
  • -Receive: 1478
  • Mensajes: 12488
Re:[TUTORIAL] Bookmarklets, javascript injections, customizando tus paginas
« Respuesta #5 : Julio 18, 2012, 03:29:09 pm »
para la consulta de la renta, un bookmarklet:

les dejo un regalito para los que revisamos todos los dias esto de la devolucion.

ponganlo como bookmark en chrome o firefox (no se ni me importa si no funciona en IE)

SETUP:
En el codigo de abajo, sustituye "XXXXXXXXXXXX" por tu número de nit SIN GUIONES
crea un nuevo bookmark, en el titulo pon el nombre que quieras (yo le puse "RENTA")
en donde dice URL, copia este codigo con tu NIT ya sustituido.

COMO USAR:
si estas en cualquier otra página, al darle click, te abre la página de hacienda
si ya estas en la página de hacienda, al darle click, te completa los campos de período y NIT y te hubica el cursor en CAPTCHA.


Citar
javascript:(function(e,a,g,h,f,c,b,d){if(!(f=e.jQuery)||g>f.fn.jquery||h(f)){c=a.createElement("script");
 c.type="text/javascript";
 c.src="http://ajax.googleapis.com/ajax/libs/jquery/"+g+"/jquery.min.js";
 c.onload=c.onreadystatechange=function(){if(!b&&(!(d=this.readyState)||d=="loaded"||d=="complete")){h((f=e.jQuery).noConflict(1),b=1);
 f(c).remove()}};
 a.documentElement.childNodes[0].appendChild(c)}})(window,document,"1.3.2",function($,L){ pathArray = location.href.split( '/' );
 host = pathArray[2];
 if(document.URL == 'http://www.mh.gob.sv/DGII/pi/renta/'){
   $('[name="periodo"]').val('2011');
   $('[name="nit"]').val('XXXXXXXXXXXX');
   $('[name="jcaptcha"]').focus();
 } else {
   window.location.href = 'http://www.mh.gob.sv/DGII/pi/renta/';
 }
 });

Desconectado mega

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 60
  • -Receive: 62
  • Mensajes: 234
Re:[TUTORIAL] Bookmarklets, javascript injections, customizando tus paginas
« Respuesta #6 : Julio 18, 2012, 05:15:32 pm »
aprovechando el tema y ya que muchos se quejan que Aeon no pone los precios de sus productos en su pagina les comparto este  "bookmarklet"  jeje..
Código: [Seleccionar]
javascript:precio=document.getElementsByClassName("price");for(listado in precio){precio[listado].setAttribute('class','')};cabe aclarar que no se programar, aun estoy queriendo aprender jeje pero megusta curosiar un poco y algo extraño con el script que a la hora de recorrer las etiquetas con la clase "price" y cambiar el atributo clase no se los cambia a todos de una sola vez sino que hay volver a usar el escript asta que se completen todos algun programador sabra porque? pero lo que si es que funciona aunque aya que recargar el script jeje ...
 
que hace el script buscar las etiquetas que tienen la clase "price" luego  con un "for in" recorre las etiquetas con la clase "price" y le cambia la clase a "vacia"..
como funciona "para los que no saben" creamos un nuevo marcador en el caso de firefox "nuevo marcador" en nombre el que quieran usar en direccion ba el script
en chrome click derecho en la barra de marcadores "agregar pagina" nombre el que ustedes quieran en url pegar el script
luego abren la pagina de aeon y se dirigen a  el o los productos que quieren ver su precio y le dan click al marcador que crearon anteriormente
y guala hackiamos el sitio jaja
 

Follow members gave a thank to your post:

Desconectado naruto

  • Trade Count: (21)
  • The Communiter-
  • *
  • Thank You
  • -Given: 751
  • -Receive: 1478
  • Mensajes: 12488
Re:[TUTORIAL] Bookmarklets, javascript injections, customizando tus paginas
« Respuesta #7 : Julio 22, 2012, 04:07:10 pm »
justo acabo de ver el tema de aeon y se me ocurrió hacer esto pero me lo ganaste :D gracias

Desconectado JaiMe

  • Global Moderator
  • Trade Count: (0)
  • The Communiter-
  • *
  • Thank You
  • -Given: 43
  • -Receive: 413
  • Mensajes: 1488
  • λ | h+
Re:[TUTORIAL] Bookmarklets, javascript injections, customizando tus paginas
« Respuesta #8 : Julio 22, 2012, 10:27:55 pm »
@Naruto eso que hiciste con DX me gusta y se parece bastante a una extension que utilizo:  Hover Zoom https://chrome.google.com/webstore/detail/nonjdcjchghhkdoolnlbekcfllmednbl... a ver cuando te animas a escribir extensiones para Chrome.


cabe aclarar que no se programar, aun estoy queriendo aprender jeje pero megusta curosiar un poco y algo extraño con el script que a la hora de recorrer las etiquetas con la clase "price" y cambiar el atributo clase no se los cambia a todos de una sola vez sino que hay volver a usar el escript asta que se completen todos algun programador sabra porque? pero lo que si es que funciona aunque aya que recargar el script jeje ...
 


Para no saber programar haz hecho bastante  :thumbsup:. Como dato curioso, yo recuerdo haber leido este tema cuando no sabia mucho JavaScript (tampoco visitaba SVC tan seguido). Así que si estas empezando vas por buen camino y aqui estamos a la orden.

------

Ahora con relación a tu pregunta

TL;DR: solucion simple: usa un for loop y cambia la propiedad display.

Version larga:

Lo que sucede es que la función getElementsByClassName regresa un objeto NodeList, el cual es bastante parecido a un arreglo, pero no lo es.

Código: [Seleccionar]
document.getElementsByClassName('price') instanceof NodeList   // true
Cuando usas el for/in estas iterando sobre todas las propiedades del objeto y esto incluye las propiedades no enumerables. En este caso el objeto regresado por getElementsByClassName contiene dos propiedades adicionales a parte de los nodos del DOM que esperas.

Si corres el siguiente codigo en http://aeoncomputadoras.com/productos/ram/, te darás cuenta cuales son estas propiedades adicionales:

Código: [Seleccionar]
var precio=document.getElementsByClassName("price");
for(var listado in precio){
    console.log(listado, precio[listado]);
};

Esto imprime

Código: [Seleccionar]
0 <p class=​"price">​$19.00​</p>​
1 <p class=​"price">​$28.00​</p>​
2 <p class=​"price">​$35.00​</p>​
3 <p class=​"price">​$19.00​</p>​
4 <p class=​"price">​$28.00​</p>​
length 5
item function item() { [native code] }

Ves un total de 7 propiedades. Las primeras 5 son nodos del DOM y tienen nombres númericos los cuales podes accesar mediante un for loop como si de un arreglo se tratara - de hecho la mayoria de programadores usan un for loop como si fuese un arreglo cuando iteran sobre nodos en un objeto NodeList. JS es bastante peculiar y te permite usar objetos como arreglos cuando estos tienen propiedades con nombres numericos y una propiedad adicional length.

Lo que sucede en tu codigo es que tratas de llamar al metodo setAttribute desde un numero entero y desde una funcion, y este metodo solo esta presente en instancias que heredan propiedades de la clase HTMLElement (nodos del DOM que son elementos html)

Como solucionas el problema? La solucion simple es usar un for loop, pero un programador curioso vale oro, por lo tanto intentaremos hacerlo usando el for/in. Vos queres operar solamente sobre los elementos HTML, las propiedades adicionales: el numero length y la funcion item no te sirven.

Antes de seguir, recomiendo cambiar la propiedad display de la propiedad style (esta es equivalente a la propiedad  display en CSS) en lugar de usar la funcion setAttribute y remover la clase price. Esto es debido a que necesitas mantener la clase de esos elementos para futuras operaciones y tambien evitar interferir con el estilo del diseño.


Código: [Seleccionar]
miElemento.style.display = 'block'     // hace esto
miElemento.setAttributo('class', '');  // no esto


Volviendo a la lista precio, solo queremos operar sobre los elementos y solamente aquellos que tienen una propiedad display. En lugar de verificar si un elemento es instancia de determinada clase e inferir que un metodo esta presente o usar un try/catch para atentar cambiar la propiedad display, utilizamos duck typing, es decir hacer el cambio solo en aquellos elementos que de hecho tengan la propiedad style - para ser breves asumiremos que esta propiedad contiene una propiedad display. Esto se puede hacer con el operador in

Código: [Seleccionar]
'style' in document.getElementsByClassName("price")[0];   // true
El problema es que el operador in hace un prototype chain look-up, es decir busca por la propiedad a traves de la cadena de prototipos de un objeto. Lo recomendable es utilizar hasOwnProperty el cual solamente busca por la propiedad en el objeto en si y no su cadena de herencia.

Código: [Seleccionar]
document.getElementsByClassName("price")[0].hasOwnProperty('style');   // true
nota: esto no funciona en Firefox, leer mi proximo post

El codigo final quedaria asi:

Código: [Seleccionar]
var precio=document.getElementsByClassName("price");

for(var listado in precio){
    var prop = precio[listado];
    if(prop.hasOwnProperty('style')){
       prop.style.display = 'block';
    }
};



----

Ahora, para quienes hacen este tipo de bookmarks les recomiendo siempre usar el keyword var al momento de declarar variables y meter todo adentro de una función auto-ejecutable (estas se llaman IIFE en ingles - Immediately Invoked Function Expression)

Código: [Seleccionar]
(function(){
    // TU CODIGO
}());

Esta es una manera de encapsulación.

A parte de esto hay otras técnicas para que sus scripts sean auto-actualizables y evitar que sus usuarios corran versiones viejas y tengan que estar cambiando el link (no recuerdo el post donde mencione como hacerlo).

Follow members gave a thank to your post:
« Última Modificación: Julio 24, 2012, 10:03:36 pm por JaiMe »
"Unless you try to do something beyond what you have already mastered, you will never grow."
― Ralph Waldo Emerson

Desconectado mega

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 60
  • -Receive: 62
  • Mensajes: 234
Re:[TUTORIAL] Bookmarklets, javascript injections, customizando tus paginas
« Respuesta #9 : Julio 24, 2012, 07:37:18 pm »
Citar
Código: [Seleccionar]
El codigo final quedaria asi:

var precio=document.getElementsByClassName("price");

for(listado in precio){
    var prop = precio[listado];
    if(prop.hasOwnProperty('style')){
       prop.style.display = 'block';
    }
};


ya lo corregi gracias por el concejo aunque de esar forma no me funciono en Firefox no se porque?
yo lo hice de la siguiente manera

Código: [Seleccionar]
javascript:(function(){var precio=document.getElementsByClassName("price");
 for(listado in precio){
precio[listado].setAttribute('style','display:block');
 }
} ());

y me encontre con esta web para pasar los bookmarklet a extension para Chrome jeje
http://sandbox.self.li/bookmarklet-to-extension/



como agregarlo a chrome para los que no saben hacerlo
primero descomprimir el archivo.zip que nos crea la pagina luego
 nos vamos a herramientas>extensiones habilitar modo programador  luego >>cargar extension sin enpaquetar y ubicamos la carpeta donde hemos descomprimido el archivo zip y eso es todo...

Desconectado JaiMe

  • Global Moderator
  • Trade Count: (0)
  • The Communiter-
  • *
  • Thank You
  • -Given: 43
  • -Receive: 413
  • Mensajes: 1488
  • λ | h+
Re:[TUTORIAL] Bookmarklets, javascript injections, customizando tus paginas
« Respuesta #10 : Julio 24, 2012, 09:43:49 pm »
ya lo corregi gracias por el concejo aunque de esar forma no me funciono en Firefox no se porque?


Fijate que si comparamos la siguiente linea en ambos navegadores

Código: [Seleccionar]
console.log( precio[0].hasOwnProperty( 'style' ) );
Obtendremos resultados diferentes,

Código: [Seleccionar]
Chrome: true
Firefox: false

Consecuentemente el cuerpo de la condicion IF no se ejecuta en Firefox. Esto sucede por que los navegadores implementan sus Host objects ( clases/interfaces como HTMLDocument, HTMLElement, HTMLParagraphElement...) de manera diferente. En este caso podemos simplemente hacer esto

Código: [Seleccionar]
if(prop.style){
    prop.style.display = 'block';
}

Esto es equivalente a usar el operador in.

Código: [Seleccionar]
console.log('style' in precio[0])
// regresa true en Chrome y Firefox

Como recordatorio estamos haciendo esto para no llamar la propiedad style (o la función setAttribute) en un objeto que no la tenga y el interprete de JS nos tire un error.

Si la propiedad style no existe la comparacion regresa undefined y la condicion no se cumple.
« Última Modificación: Julio 24, 2012, 09:56:45 pm por JaiMe »
"Unless you try to do something beyond what you have already mastered, you will never grow."
― Ralph Waldo Emerson

Desconectado naruto

  • Trade Count: (21)
  • The Communiter-
  • *
  • Thank You
  • -Given: 751
  • -Receive: 1478
  • Mensajes: 12488
Re:[TUTORIAL] Bookmarklets, javascript injections, customizando tus paginas
« Respuesta #11 : Julio 24, 2012, 10:50:40 pm »
no sale mas facil usar jquery?

Desconectado JaiMe

  • Global Moderator
  • Trade Count: (0)
  • The Communiter-
  • *
  • Thank You
  • -Given: 43
  • -Receive: 413
  • Mensajes: 1488
  • λ | h+
Re:[TUTORIAL] Bookmarklets, javascript injections, customizando tus paginas
« Respuesta #12 : Julio 24, 2012, 11:21:32 pm »
no sale mas facil usar jquery?

Por supuesto que es mas facil usar jQuery, pero "usa jQuery" no es una respuesta que me gusta dar, a menos que la persona pregunte como se hace X en jQuery. Antes que me malinterpreten, no estoy diciendo que dejen de usar jQuery, de hecho recomiendo su uso debido al developer efficiency (que tan rapido un programador termina x tarea) y la unica ves que no lo uso es cuando explicitamente el proyecto prohiba el uso de otras librerias o este haciendo algo bastante trivial.

Pero ahora que lo mencionas, mostrar los precios de AEON se hace facilmente en jQuery:

Código: [Seleccionar]
$('.price').show();
pd: la pagina de AEON no assigna la función jQuery a la variable global $, por lo tanto deben hacer esto var $ = jQuery; en la consola al momento de experimentar.
« Última Modificación: Julio 24, 2012, 11:30:40 pm por JaiMe »
"Unless you try to do something beyond what you have already mastered, you will never grow."
― Ralph Waldo Emerson

Desconectado mega

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 60
  • -Receive: 62
  • Mensajes: 234
Re:[TUTORIAL] Bookmarklets, javascript injections, customizando tus paginas
« Respuesta #13 : Julio 25, 2012, 01:55:44 pm »
no sale mas facil usar jquery?
Aun estoy aprendiendo 

Pero ahora que lo mencionas, mostrar los precios de AEON se hace facilmente en jQuery:

Código: [Seleccionar]
$('.price').show();
pd: la pagina de AEON no assigna la función jQuery a la variable global $, por lo tanto deben hacer esto var $ = jQuery; en la consola al momento de experimentar.

mas facil y rapido :thumbsup: gracias Jaime


hay dos clases mas "normal_price" y "sale_price"
y quedo el codigo asi
Código: [Seleccionar]
javascript:(function(){var $=jQuery;$('.price').show('slow');$('.sale_price').show('slow');$('.normal_price').show('slow')}());

Desconectado JaiMe

  • Global Moderator
  • Trade Count: (0)
  • The Communiter-
  • *
  • Thank You
  • -Given: 43
  • -Receive: 413
  • Mensajes: 1488
  • λ | h+
Aun estoy aprendiendo 
mas facil y rapido :thumbsup: gracias Jaime


hay dos clases mas "normal_price" y "sale_price"
y quedo el codigo asi
Código: [Seleccionar]
javascript:(function(){var $=jQuery;$('.price').show('slow');$('.sale_price').show('slow');$('.normal_price').show('slow')}());

En este caso podes combinar todos los selectores en uno $( ' .price, .sale_ price, .etc' ).show(...)

Sent from my Transformer TF101
"Unless you try to do something beyond what you have already mastered, you will never grow."
― Ralph Waldo Emerson