Autor
|
Tema: Web-Bot detection (Leído 7,320 veces)
|
alvaca
Desconectado
Mensajes: 11
|
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
|
|
|
En línea
|
|
|
|
@XSStringManolo
Hacker/Programador
Colaborador
Desconectado
Mensajes: 2.399
Turn off the red ligth
|
Captura el tráfico y analízalo hasta que lo entiendas.
El servidor no es una entidad mágica que adivina cuando le das a un botón. Se lo dices tú. Monta un esquema MITM.
|
|
|
En línea
|
Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖
|
|
|
alvaca
Desconectado
Mensajes: 11
|
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
|
|
|
En línea
|
|
|
|
el-brujo
|
en los juegos no tengo ni ideas de cómo detectar un bot, lo siento. Pero en páginas web si domino el tema y hay varias cosas a tener en cuenta. Pero vaya, si usa User-Agent es que son peticiones vía web, entiendo yo. Lo ideal es montar un servidor de juegos igual, hacer las peticiones y mirar los logs, para saber todo lo que captura de ti. Por ejemplo CloudFlare tiene una cosa que se llama "IP reputation", que sólo viendo la IP ya "sabe" si esta Ip es usada por bots o no, si es un proxy, red de tor, etc. Configurado el User Agent para que muestre un acceso desde un móvil y en caso de ser necesario el uso de un proxy User Agent es muy importante, y recuerda una IP, un User Agent, si vas cambiando de User-Agent con la misma IP resultará siempre fallido. Y si el User-Agent pues que sea actual y real. Tendrás que analizar si el servidor manda cookies y aceptarlas. Pueden tener muchos otros métodos de detección de bots. CloudFlare (web) mira: - JS Challenge (si el navegador acepta e interpreta javascript) aunque es fácil saltárselo - User-Agent - HTTP Method (GET, POST, OPTIONS, PUT DELETE) - HTTP Version (1.1 1.0 2.0)
|
|
|
En línea
|
|
|
|
alvaca
Desconectado
Mensajes: 11
|
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??
|
|
|
En línea
|
|
|
|
[u]nsigned
Desconectado
Mensajes: 2.397
JS/Node developer
|
Por ejemplo la app web de wsp https://web.whatsapp.com/ tiene proteccion contra bots, yo intente hacer un scripts de automatización de envío de mensajes con greasemonkey pero no funcionaba, creo que para hacer eso lo que hacen es meter el código dentro de funciones auto-ejecutables de js y asi se encapsula el scope de forma que no se puede acceder desde afuera, por ejemplo con greasemonkey o 'inyectando' código por la consola del navegador. Asi que fui un paso mas allá y me cree un bot que usa puppeteer para lanzar el chrome de mi sistema (no la modalidad headless, con esa tampoco funciono), con mis sesiones, cookies y toda mi data se usuario, 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, y ahi si ya no pudo defenderse y ahí tengo a mi bot spameando a dos manos y si wsp no pudo lograrlo nadie puede defenderse de eso, mas allá de poner un captcha, pero eso solo agregaria un paso de intervención humana, una vez resuelto el mismo podría dársele el control de las tareas al bot de todas formas, ya que poner un capta para cada acción (enviar un mensaje en mi caso) haria que la app en si sea inútil para un humano por se poco practica. Como lo tuyo es a nivel de movil, te recomiendo que mientras corres tu bot (no se que metodo usaras) uses la aplicación HTTP Canary que es un sniffer para Android, asi luego vas a poder ver con lujo de detalle todo lo que el juego le esta mandando a sus servidores y viceversa. Esta es la unica app de este tipo que puede snifar ppor https y http2, al menos asi lo era hace dos meses cuando yo estuve con ese tema, te la recomiendo porque ya se que funciona, lo unico malo es que tiene un trial de 14 dias en su version free. Por ultimo si investigas en google sobre como protegerte contra bots (o mejor dicho web-scrapping) veras que no existe una forma optima de hacerlo al dia de hoy, asi que si usas tiempos de respuesta aleatorios y humanos, un user-agent consistente y un proxy no deberias preocuparte. Ademas esto no es un delito per se y siempre tendras la excusa de que lo haces con "fines didácticos o de investigación". PD: no se molesten en pedirme el bot de wsp web porque no lo comparto ni está a la venta, ya les di todo los detalles para hacer el suyo propio.
|
|
|
En línea
|
No hay atajo ante la duda, el misterio se hace aquí... Se hace carne en cada uno, el misterio es existir!
|
|
|
rub'n
Desconectado
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
Por ejemplo la app web de wsp https://web.whatsapp.com/ tiene proteccion contra bots, yo intente hacer un scripts de automatización de envío de mensajes con greasemonkey pero no funcionaba, creo que para hacer eso lo que hacen es meter el código dentro de funciones auto-ejecutables de js y asi se encapsula el scope de forma que no se puede acceder desde afuera, por ejemplo con greasemonkey o 'inyectando' código por la consola del navegador. Asi que fui un paso mas allá y me cree un bot que usa puppeteer para lanzar el chrome de mi sistema (no la modalidad headless, con esa tampoco funciono), con mis sesiones, cookies y toda mi data se usuario, 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, y ahi si ya no pudo defenderse y ahí tengo a mi bot spameando a dos manos y si wsp no pudo lograrlo nadie puede defenderse de eso, mas allá de poner un captcha, pero eso solo agregaria un paso de intervención humana, una vez resuelto el mismo podría dársele el control de las tareas al bot de todas formas, ya que poner un capta para cada acción (enviar un mensaje en mi caso) haria que la app en si sea inútil para un humano por se poco practica. Como lo tuyo es a nivel de movil, te recomiendo que mientras corres tu bot (no se que metodo usaras) uses la aplicación HTTP Canary que es un sniffer para Android, asi luego vas a poder ver con lujo de detalle todo lo que el juego le esta mandando a sus servidores y viceversa. Esta es la unica app de este tipo que puede snifar ppor https y http2, al menos asi lo era hace dos meses cuando yo estuve con ese tema, te la recomiendo porque ya se que funciona, lo unico malo es que tiene un trial de 14 dias en su version free. Por ultimo si investigas en google sobre como protegerte contra bots (o mejor dicho web-scrapping) veras que no existe una forma optima de hacerlo al dia de hoy, asi que si usas tiempos de respuesta aleatorios y humanos, un user-agent consistente y un proxy no deberias preocuparte. Ademas esto no es un delito per se y siempre tendras la excusa de que lo haces con "fines didácticos o de investigación". PD: no se molesten en pedirme el bot de wsp web porque no lo comparto ni está a la venta, ya les di todo los detalles para hacer el suyo propio. Hola por casualidad tendras un bot de wuasap web ? lo necesito, estoy comenzando en informática. quiero ser crackJuanker.
|
|
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
|
|
|
FFernandez
Desconectado
Mensajes: 128
|
Si yo quisiera detectar un boot, que maneje el ratón, pondría esas trampas que detecten el paso del ratón de un punto a otro. por la media recibida de los usuarios banearía a los que estén por debajo del umbral.
Al utilizar las pulsaciones por codigo de un botón a otro no hay rastro……………..jeje
|
|
« Última modificación: 13 Agosto 2020, 22:23 pm por FFernandez »
|
En línea
|
|
|
|
alvaca
Desconectado
Mensajes: 11
|
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 ) 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, 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
|
|
|
En línea
|
|
|
|
alvaca
Desconectado
Mensajes: 11
|
[ 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 ) 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
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
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
detection
Hacking Wireless
|
mariosky63
|
0
|
2,513
|
17 Octubre 2011, 14:45 pm
por mariosky63
|
|
|
detection de modem wireless
Hacking Wireless
|
pierini1
|
8
|
3,626
|
10 Noviembre 2012, 18:06 pm
por HdM
|
|
|
deshabilitar la funcion monitor detection
GNU/Linux
|
gAb1
|
2
|
2,038
|
27 Agosto 2015, 19:43 pm
por gAb1
|
|
|
Network Monitoring and Threat Detection In-Depth Online Training
Tutoriales - Documentación
|
ehn@
|
0
|
891
|
26 Noviembre 2023, 03:40 am
por ehn@
|
|
|
Malware: Prevention, Detection, and Response
Tutoriales - Documentación
|
ehn@
|
0
|
1,182
|
30 Noviembre 2023, 12:39 pm
por ehn@
|
|