[BATCH] realizar búsquedas automáticas en web

Iniciado por alehopio, 12 Diciembre 2013, 09:57 AM

0 Miembros y 2 Visitantes están viendo este tema.

alehopio

Hola:

Me gustaría que algún programador me ayudase en mis escarceos con BATCH que es el único lenguaje del que tengo alguna noción.

De paso quedará el tema por si alguien se siente interesado en aprovecharlo.

Resulta que bing.com tiene un programa de recompensas por realizar búsquedas, el único problema es que está restringido para los usanos. Aunque esa limitación es fácil de saltar con un proxy.

Pasos a seguir:

1) instalar una vpn en el pc
SoftEther VPN Client + VPN Gate Client Plug-in [vpngate.net]

2) conectar el vpn a un servidor del país en cuestión, usa

3) entrar en bing.com pero si no se hace con ip de usa nada de lo siguiente sirve

4) arriba a la derecha pinchar en el icono de la rueda dentada de configuración

5) pinchar en "change your country/region" y elegir "United States - English" << ES EL PASO FUNDAMENTAL sabremos si está todo bien porque aparece "0 of 5" antes del icono de la rueda >>

6) ahora entrar en la parte superior derecha de la ventana pinchar en SING IN seguidamente en MICROSOFT ACCOUNT - CONNECT

7) usar una cuenta de live (hotmail, live, outlook) que tenga como país a USA

8) pinchar en "0 of 5" en la parte superior derecha de la ventana y elegir "Join Rewards now"

9) << OTRO PASO FUNDAMENTAL >> pinchar en " Microsoft account" junto al pequeño icono de la ventan de windows, bajo la frase "or sign up using a Microsoft account by clicking below"

10) si todo se ha hecho correctamente ya tenemos la cuenta de bing rewards creada, ahora por realizar búsquedas con bing se nos daran puntos que se pueden canjear en el apartado REDEEM http://www.bing.com/rewards/redeem/all

lo menos costoso en dedicación son las tarjetas de amazon.com de 5$ con los que se pueden comprar codigos online

http://www.amazon.com/s/field-keywords=online%20code

Por cada cuenta live de amigo invitado regalan 200 puntos por la primera semana de búsquedas diarias, y por cada cuenta permiten 15 puntos diarios por búsquedas; así que en 1 semana y con dos amigos invitados se tienen los puntos para el código de 5$

Garantizado que funciona. Ahora bien, el problema que surge es automatizar tanto el logueo de cuentas como la realización de búsquedas automáticas.

Lo del logueo automático de cuentas no tengo ni idea de como hacerlo.

Para las búsquedas automáticas me pasaron el siguiente BATCH

Código (dos) [Seleccionar]

@echo off
rem Con la configuración de FIREFOX siguiente:
rem 1) -setDefaultBrowser
rem 2) about:config browser.link.open_newwindow.override.external=1
rem 3) addons.mozilla.org Click&Clean
cd \
cd c:\Program Files\Mozilla Firefox
set /a "$COUNT=1"
:begin
set /a "$DATA=%random% %%11111 + 1111"
set /a "$TIME=%random% %%4000 + 4000"
firefox.exe http://www.bing.com/search?q=sex+%$DATA%
PING 1.1.1.1 -n 1 -w %$TIME% >NUL
echo %$COUNT%
set /a "$COUNT=%$COUNT%+1"
if %$COUNT%==33 goto :end
goto begin
:end
start c:\windows\media\ding.wav
eof


Sin embargo esas búsquedas son fácilmente detectables como automáticas. Por tanto  quisiera crear un batch que buscase frases de un texto tomadas por linea.

Por ejemplo tomemos el texto de ftp://ftp.bls.gov/pub/doc/news.txt

¿Cómo hacer para que tome cada linea de esa web de texto y la use como la variable $DATA del batch?

Eleкtro

#1
Siento admiración y pena al mismo tiempo, admiración por el esfuerzo que has invertido en hallar/resolver una vulnerabilidad, y pena porque todo el esfuerzo no compensa la mala elección del lenguaje ...algo tan manco simple e ineficiente como Batch es lo último a lo que deberías recurrir para una tarea similar!.

Prueba así:
@Echo OFF & TITLE Bing Searcher & Setlocal EnableDelayedExpansion

Set /A "MAXQueries=33"
Set /A "MAXResponseInterval=5000"
Set /A "QueryCount=0"

Set "TextFile=doc.txt"
Set "FF=%ProgramFiles%\Mozilla Firefox\Firefox.exe"
Set "Query=http://www.bing.com/search?q="
Set "Search="

:Loop
FOR /F "Usebackq Delims=" %%@ IN ("%TextFile%") DO (
Set "Search=%%@"
Set "Search=!Search: =+!"
Start /B "Bing Query" "%FF%" "%Query%!Search!"
Ping.exe LOCALHOST -n 1 -w %MAXResponseInterval% 1>NUL
Set /A "QueryCount+=1"
If %QueryCount% EQU MAXQueries (Goto :End)
)

:End
Start /B "End Song" "%WinDir%\media\ding.wav"
Exit /B 0


Saludos








alehopio

#2
Hola,

Gracias por el esfuerzo y la respuesta. Se nota que tu BATCH es profesional porque está incluso estructurado.

Pero adolece que el tiempo entre búsqueda no es aleatorio como podría ser una búsqueda manual no automática, así que habría que añadir una variable al principio

Set /A "MINResponseInterval=10000"

y dentro de la clausa FOR meter la definicion aleatoria del tiempo de busqueda

Set /A "ResponseInterval=%random% %%MINResponseInterval% + %MAXResponseInterval%"

así en cada iteración esperaría entre 5 y 15 segundos para la próxima búsqueda cambiando la variable del ping por la aleatoria ResponseInterval

Ping.exe LOCALHOST -n 1 -w %ResponseInterval% 1>NUL

No sé si habré metido la pata con la cantidad de % que hay que meter.

Y a parte de eso, queda la cuestión de meter automáticamente en el doc.txt la fuente de internet donde coger cada día una texto diferente.

No sé si funciona la definición doc.txt < http://ftp://ftp.bls.gov/pub/doc/news.txt

¿Cómo puedo descargar un archivo de internet y meterlo como una variable en el BATCH?


P.D.

Comentar que hay que comprobar que el VPN funciona correctamente comprobando que no es detectado, por ejemplo desde

http://whatismyipaddress.com/proxy-check

Y además recordar que las cuentas de live deben de tener datos verdaderos hasta de dirección y teléfono que pueden comprobarse desde

http://www.whowhere.com/

Eleкtro

#3
Cita de: alehopio en 12 Diciembre 2013, 12:19 PMel tiempo entre búsqueda no es aleatorio
Y a parte de eso, queda la cuestión de meter automáticamente en el doc.txt la fuente de internet donde coger cada día una texto diferente.

Hombre, no te lo vamos a dar todo echo al 100%, aunque si que es verdad que podría haberte amoldado una Random en el ejemplo, pero bueno.

Para descargar un archivo puedes usar el comando FTP o bien la aplicación externa WGet (opción recomendada si no te importan las dependencias) -> http://gnuwin32.sourceforge.net/packages/wget.htm

Cita de: alehopio en 12 Diciembre 2013, 12:19 PM¿Cómo puedo descargar un archivo de internet y meterlo como una variable en el BATCH?

Sencíllamente no puedes, tienes que usar un FOR para iterar las lineas del archivo.
En realidad si que es posible pero no te lo recomiendo y no te serviría para nada puesto que no podrías iterarla o sería una pesadilla hacerlo, no existe el Array en Batch, además de que no es una buena práctica ese tipo de variables y setear dichas variables multilinea requiere el uso de trucos/técnicas avanzadas.

CitarComentar que hay que comprobar que el VPN funciona correctamente comprobando que no es detectado, por ejemplo desde
http://whatismyipaddress.com/proxy-check

Y además recordar que las cuentas de live deben de tener datos verdaderos hasta de dirección y teléfono que pueden comprobarse desde
http://www.whowhere.com/

¿Como esperas hacer todo eso usando Batch?,
no puedes hacer requests, ni siquiera tiene ningún soporte o interactividad con nada relacionado de la network, solo un par de comandos internos y externos como Ping,
ve buscando aplicaciónes commandline que cumplan tus necesidades porque...las vas a necesitar si insistes en hacerlo en Batch.

PD: Por el código que has mostrado anteriórmente y la forma (correcta) de referirte a los términos del lenguaje da la impresión de que manejas Perl o Ruby; cualquiera de ellos es idoneo para la tarea, sigo sin entender porque resulta necesario hacerlo en Batch, va a ser una pesadilla.

EDITO: puedes combinar el uso de VisualBasicScript para hacerle un request a esas dos urls:
-> http://stackoverflow.com/questions/204759/http-get-in-vbs
-> http://development.spalt3r.de/vbs-script-to-send-a-http-request/

Pero insisto en que si dispones de cualquier otro lenguaje, aunque solo tuvieras conocimientos básicos, va a ser mucho mejor y más sencillo que en Batch/vbs... de echo si piensas usar VBS + Batch (no te queda otra siendo Batch xD) entonces deberías escribir todas las instrucciones en VBS diréctamente y no engorronear con un Batch híbrido.

Saludos!








alehopio

#4
Hola de nuevo:

De programar conozco lo básico en BATCH y no entiendo nada de otros lenguajes.

No sé si podré llegar más lejos con ello para este tema que tengo en desarrollo. Por lo pronto quiero ir paso a paso, desarrollando hasta alcanzar pequeñas metas:
1º) hacer búsquedas << HECHO >>
2º) hacer búsquedas automáticas << HECHO >>
3º) hacer búsqueda automáticas que no parezcan mecánicas << EN PROCESO >>
4º) login automático en la cuenta de correo << EN ESTUDIO >>
5º) etc

Ojalá pudierais ayudarme en ello.

Gracias al esfuerzo de EleKtro H@cker tengo una nuevo BATCH hecho con tu sugerencia, pero me da errores y no sé donde está el fallo:


@Echo OFF & TITLE Bing Searcher & Setlocal EnableDelayedExpansion

bitsadmin.exe /transfer myDownloadJob /download /priority normal http://www.pcre.org/news.txt %TMP%\news.txt
Set TextFile=%TMP%\news.txt
Del %TMP%\news.txt

Set "FF=%ProgramFiles%\Mozilla Firefox\Firefox.exe "
Set "Query=http://www.bing.com/search?q="
Set "Search=&FORM="

REM crear aqui la parte de login en email

Set /A "MAXQueries=%random% %% 10 + 33"
Set /A "MAXwait=10000"
Set /A "MINwait=5000"
Set /A "QueryCount=0"

:Loop
FOR /F "Usebackq Delims=" %%@ IN ("%TextFile%") DO (
Set "Search=%%@!Search!"
Set "Search=!Search: =+!"
Start /B "Bing Searcher : !QueryCount!" "!FF!" "!Query!!Search!"
       Set /A "Wait=!random! %% !MAXwait! + !MINwait!"
Ping.exe 1.1.1.1 -n 1 -w %wait% >NUL
Set /A "QueryCount+=1"
Cls & Echo %QueryCount%
       If !QueryCount! EQU !MAXQueries! (Goto :End)
)

:End
Start /B "End Song" "%WinDir%\media\ding.wav"
Exit /B 0



Parece que hace las búsqueda pero parpadea la ventana con mensaje de error.


P.S. Corregidos los errores


Eleкtro

#5
¿Cual es el mensaje de error?

Prueba a setear el parámetro -n, que lo usarías como segundos de espera (el valor es en segundos, no milisegundos):

Código (dos) [Seleccionar]
Set /A "MAXwait=10"
Set /A "MINwait=5"
Ping LOCALHOST -n %wait% 1>NUL


Saludos!








alehopio

#6
Había varios errores que ya he pulido. El que salía en pantalla era una división por cero debido a que

set /a "wait=!random! %%MAXwait% + %MINwait%"

no toma las ultimas cifras de la variable random porque el %numero que debería seguir a %random% no es generado por esa sentencia.

No sé como hacer para que esa sentencia de un %9 después del %random% donde 9 fuese el número de %MAXwait% aunque siempre hay otra forma de hacerlo correctamente pero no tan elegante

Set /A "wait=%random% * (%MAXwait% - %MINwait% + 1) / 32768 + %MINwait%"

Supongo que tu sabrás como hacer que eso de  %%MAXwait% en realidad genere el %9 donde 9 sería el número que tuviera la variable %MAXwait% pero yo no domino esto.

Respecto de hacer que ping haga -n iteraciones lo descarté en su día porque entonces hay periodos de tiempo constantes (medidos en segundos) entre búsquedas y para hacerlo más aleatorio es preferible que sean no constantes (milisegundos) por eso el uso exclusivo de -w

Además de que el ping a LOCALHOST no tarda el tiempo deseado, supongo que el sistema tendrá algún tope para ello, a parte del error del 1 antes de >null


Ahora investigaré como hacer un login automático en el email. ¿ Puedes indicarme alguna referencia al respecto?

Gracias


Eleкtro

#7
Estás usando una herramienta equivocada, si quieres una sugerencia, teniendo sólamente Batch yo usaría el método "Sleep" de VBS para los milisegundos, usaría el lenguaje tanto para la espera como para randomizar.

Código (dos) [Seleccionar]
@Echo OFF

Set /A "MINWait=2000"
Set /A "MAXWait=4000"

(
Echo Randomize
Echo Wait = Int^(^(%MAXWait%-%MINWait%+1^)*Rnd+%MINWait%^)
Echo WScript.Sleep^(Wait^)
Echo Wscript.Quit^(Wait^)
) > "%TEMP%\Sleep.vbs"
wscript.exe "%TEMP%\Sleep.vbs"

Echo Tiempo esperado: %ErrorLevel%

Pause&Exit


Cita de: alehopio en 13 Diciembre 2013, 18:17 PMAhora investigaré como hacer un login automático en el email. ¿ Puedes indicarme alguna referencia al respecto?

Con puro Batch no es posible.

Desde la consola puedes intentar utilizar cUrl o Wget para loguearte y descargarte el código fuente de "X" página, y luego, parsear la salida obtenida para 'capturar' los datos que requieras, con un FOR /F.

-> http://curl.haxx.se/download.html (la versión genérica para Win32)

La verdad, yo nunca he intentado hacer esto con herramientas por consola en Batch, aquí tienes algo de info:

http://stackoverflow.com/questions/12399087/curl-to-access-a-page-that-requires-a-login-from-a-different-page
http://www.dyncommunity.com/questions/32854/how-to-use-wget-or-curl-to-login.html

saludos








alehopio

#8
Hola de nuevo, y feliz año

Resulta que no logro hacer que el BATCH creado realice las búsquedas, no sé que es lo que estará mal en el código, y eso que lo he repasado muchas veces.  


Código (DOS) [Seleccionar]
@Echo OFF & TITLE Bing Searcher & Setlocal EnableDelayedExpansion

bitsadmin.exe /transfer myDownloadJob /download /priority normal http://www.pcre.org/news.txt %TMP%\news.txt

Set "TextFile=%TMP%\news.txt"
Set "Explore=%ProgramFiles%\Mozilla Firefox\Firefox.exe"
Set "Query=http://www.bing.com/search?q="
Set "Search="

REM cear aqui la parte de login en email

Set /A "MAXQueries=%random% %10 + 33"
Set /A "PLUSwait=10000"
Set /A "MINwait=5000"
Set /A "QueryCount=0"

:Loop
FOR /F "Usebackq Delims=" %%@ IN ("%TextFile%") DO
       (
Set "Search=%%@"
Set "Search=!Search: =+!"
Start /B "Bing Query" "%Explore%" "%Query%!Search!"
       Set /A "wait=%random% %% %PLUSwait% + %MINwait%"
ping.exe 1.1.1.1 -n 1 -w %wait% > NUL
Set /A "QueryCount+=1"
If %QueryCount% EQU %MAXQueries% (Goto :End)
       )

:End
Start /B "End Song" "%WinDir%\media\ding.wav"
Exit /B 0


Lo he repasado muchas veces y no encuentro el error que hace que el LOOP no se ejecute...

P.D. Creo que el problema está en el borrado y definición de la variable que almacena la linea de texto  en


Set "Search=%%@"
Set "Search=!Search: =+!"


eso no lo entiendo...

Eleкtro

#9
Sin examinar el código, lo primero que salta a la vista:

Citar
Código (DOS,2) [Seleccionar]
FOR /F "Usebackq Delims=" %%@ IN ("%TextFile%") DO
      (
      ...
      )

Esto es Batch, el inicio de operador de agrupación debes ponerlo en la linea de arriba, a la derecha del keyword DO.

For ... DO (
   ...
)



Saludos!