Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - alvaca

#1
Desarrollo Web / Re: Web-Bot detection
8 Agosto 2020, 14:04 PM
Cita de: FFernandez en 28 Julio 2020, 00:11 AM
Al utilizar las pulsaciones de un botón a otro no hay rastro.................jeje

Y en caso de simular un móvil es posible detectar los zooms con los dedos, sus coordenadas y demás??
#2
Desarrollo Web / Re: Web-Bot detection
8 Agosto 2020, 13:59 PM
[

Muchas gracias unsigned, me ha sido de mucha ayuda. Aún así no se como ves fácil el modo de hacer web-scraping sin ser detectado. No hago más que ver nuevas formas de detectar un bot (aunque algunas veces no explican como  :-()

[quote author=nsigned link=topic=505898.msg2225508#msg2225508 date=1595572854]
en lugar de interactuar por js directamente con el dom (tampoco funciono) lo que hago es simular pulsaciones de teclado o clicks de ratón reales, puppeteer tiene esa feature por suerte
[/quote]

Entiendo que lo óptimo es simular clicks con coordenadas como haces tu  con puppeteer, aunque yo no se como podría hacerlo desde una app de móvil. En mi caso solo he encontrado una forma de navegar de forma automatizada. Esta forma es mediante un WebView que una vez ha cargado la página ejecuta un javascript como este:

javascript: document.getElementsById('id').click()

De esta forma entiendo que navego como un usuario normal con sus tiempos y demás. Aún así tengo mis dudas ya que no se si estoy inyectando scripts detectables al crear en java un JavascriptInterface para guardar los datos obtenidos en la aplicación.

Me he metido ya en mucho detalle pero a lo mejor alguno sabe sobre el tema.
Muchas gracias de adelantado
#3
Desarrollo Web / Re: Web-Bot detection
8 Agosto 2020, 13:53 PM
Muchas gracias unsigned, me ha sido de mucha ayuda. Aún así no se como ves fácil el modo de hacer web-scraping sin ser detectado. No hago más que ver nuevas formas de detectar un bot (aunque algunas veces no explican como  :-()

Citaren lugar de interactuar por js directamente con el dom (tampoco funciono) lo que hago es simular pulsaciones de teclado o clicks de ratón reales, puppeteer tiene esa feature por suerte,

Entiendo que lo óptimo es simular clicks con coordenadas como haces tu  con puppeteer, aunque yo no se como podría hacerlo desde una app de móvil. En mi caso solo he encontrado una forma de navegar de forma automatizada. Esta forma es mediante un WebView que una vez ha cargado la página ejecuta un javascript como este:

javascript: document.getElementsById('id').click()

De esta forma entiendo que navego como un usuario normal con sus tiempos y demás. Aún así tengo mis dudas ya que no se si estoy inyectando scripts detectables al crear en java un JavascriptInterface para guardar los datos obtenidos en la aplicación.

Me he metido ya en mucho detalle pero a lo mejor alguno sabe sobre el tema.
Muchas gracias de adelantado
#4
Perdón por reanudar este tema. Me ha resultado de mucha ayuda pero me queda una duda respecto al úlimo mensaje.

Entiendo que el servidor solo se puede enterar de que existe un js-bot si el Request o Ajax se lo indica. El caso es que yo soy nuevo en esto y no sé donde puedo mirar si el browser envia esa información o no.

He estado mirando los request y para cada click existe siempre un GET o POST más otros muchos GET que se consiguen con la cache. He realizado esto tanto de forma manual como con la consola y su respectivo js.click() pero no veo diferencias. No se si es porque no las hay o porque no se leer dicha información.

Muchas gracias y perdón por las molestias
#5
Desarrollo Web / Re: Web-Bot detection
20 Julio 2020, 23:00 PM
Hola el-brujo,

Sí, se trata de un browser game que se ejecuta en Internet como una web más. Por ese motivo quería conocer como saber que tipo de información se envía al servidor.

Al querer automatizar la navegación por dicha web uso javascript para recoger textos, rellenar formularios y clicsr botones (por ej. Document.getElementById("s1").click()) No se si el servidor puede detectar si ha sido automatizado o si lo ve igual que un click normal.
De ser así donde me tendría que fijar para ver si lo detecta??

Respexti a montar un servidor de juegos igual, que es eso?? Osea puedo replicar el html y el js que veo desde mi navegador y ejecutarlo de forma local?? O desde el propio navegador hay forma de ver eso??




#6
Desarrollo Web / Re: Web-Bot detection
20 Julio 2020, 21:57 PM
Lo siento pero soy medianamente nuevo en esto. He leído los Request que se rwlaixna durante el juego y se resumen en unos recursos almacenados en la cache y un GET o POST en cada cambio de página. El caso es que no sé leer muy bien los headers y no se si el propio browser enviar información que diferencia entre un js de la línea de comandos y un click manual.

El MITM que es?? He intentado buscar información pero no entiendo casi nada. Si pudieses orientarme un pcoo te lo agradecería.

Muchas gracias
#7
Desarrollo Web / Web-Bot detection
19 Julio 2020, 15:25 PM
En el desarrollo de juegos online se hace un gran esfuerzo por detectar si se están inclumpliendo las normas, especialmente con el uso de bots. Estoy intentando crear un bot en Android que simule la navegación a través de un juego online que funciona con js. El caso es que como se menciona antes este debe evitar ser detectado.

Por ese motivo me gustaría saber que formas tiene el servidor de detectar el uso de bot-scripts.
Hasta ahora he valorado las siguientes casuisticas:

  • Conexión mediante una librería que usa de forma síncrona javascrpit para obtener la información deseada y realizar clics, tal y como haría una persona en el navegador
  • Configurado el User Agent para que muestre un acceso desde un móvil y en caso de ser necesario el uso de un proxy
  • Simulación de comportamiento humano con tiempos de espera aleatorios y conexiones periódicas también con rangos aleatorios

Estos pasos me parecen importantes a la hora de evitar ser detectado. Sin embargo, el juego hizo una actualización y en el propio navegador se resaltan ciertos campos cliqueables cuando el puntero se situa sobre ellos. Esto me hace pensar que puede que en las cookies o en algún request se envien las coordenadas del clic. En ese caso el uso de javascripts haría que el bot fuese detectado, ya que una persona rara vez clica siempre en el mismo punto de los botones o ni los clica (tengo mis dudas al ejecutar el js).
No sé muy bien si me estoy preocupando en exceso pero es esencial que el bot no sea detectable. Cualquier cosa que se me pueda escapar agradecería muchisimo que me lo comentasen. Incluso alguna fuente donde se explique en detalle la información necesaria para entender las comunicaciones cliente - servidor.

Muchas gracias

Alvaca
#8
Ya, es complicado el tema jajajajaj

Muchas gracias compañero, esperaré a ver si alguien más me puede orientar.

Lo ultimo que he entendido es que con WebView puedo desarrollarlo, aunque no tengo claro que sea muy seguro jajajajaj. He conseguido logearme, ahora me falta aprender scraping con WebView si es que se puede y continuar jajajja
#9
Claro, yo quiero hacer un bot, no modificar los valores que el servidor tenga jajajaja

El caso es que quiero o trabajar con el navegador o enviar directamente los requests que envía el navegador.

En el caso de trabajar directamente con el navegador no sabría, al menos en un dispositivo Android (en Windows sabría hacerlos usando Selenium), pero si sabes de que temas debería de investigar podría verlo.

En el otro caso tengo un problema. Ya he solucionado el error 401 (el fallo estaba en los headers del Request). En problema ahora viene cuando es necesario tener javascript activado para jugar. He conseguido enviar cierta información con JSoup, pero obviamente no consigo avanzar sin "activar" javascript.

Muchas gracias srWhiteSkull

#10
Entiendo, pero que puntos debería de tener en cuenta a la hora de enviar una petición POST o GET? Lo digo porque entiendo que tengo que controlar el UserAgent, las cookies y demás para enviar lo mismo que un navegador y no ser detectable.

Para ello hay métodos con Java JSoup, pero me gustaría afinar las cosas para no cometer ningún fallo.

Por ejemplo he estado mirando trabajar con el siguiente código, aunque recibo errores de que no está permitido el request (error 401):

Connection.Response log = (Connection.Response) Jsoup.connect("https://" + this.url)
                    .userAgent(userAgent)
                    .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
                    .header("Accept-Encoding", "gzip, deflate, br")
                    .header("Accept-Language", "es-ES,es;q=0.9,en;q=0.8")
                    .header("Cache-Control", "max-age=0")
                    .header("Connection", "keep-alive")
                    .header("Host", "Host:"+url)
                    .header("Referer", "http://www.google.es")
                    .header("Upgrade-Insecure-Requests","1")
                    .data("name", this.user)
                    .data("password",this.pass)
                    .data("lowRes", "1")
                    .data("s1", "Iniciar+sesi%C3%B3n")
                    .data("w", "1550%3A1436")
                    .data("login",(""+System.currentTimeMillis()))
                    .method(Connection.Method.POST)
                    .execute();