Hay un nuevo bot de póquer de código abierto llamado PokerPirate . Estoy interesado en cualquier forma creativa en la que una aplicación web pueda detectar / frustrar / derrotar a un bot de póquer. (Esta es una discusión puramente académica, con el mismo espíritu con el que se escribió PokerPirate).
107
Respuestas:
Derrotar a un bot desde la perspectiva del servidor
Muchos sitios de póquer en línea utilizan entradas Captcha emergentes que se activan por una actividad sospechosa.
Algunos sitios de póquer monitorean los tiempos y patrones de juego (es decir, el peor de los casos es un jugador que juega 24x7 y 16 mesas de forma continua, hay una pequeña posibilidad de que sea un humano real (sin embargo, algunos jugadores tienen la capacidad de jugar una mano muy grande) volúmenes que para el ojo inexperto parecerían un bot)
Tíralo con fallas. Si sospecha que un jugador es un bot, cambie todas las posiciones de sus cartas de juego en unos pocos píxeles en la pantalla, hágales diferentes colores / diseños / patrones para 1/100 manos y vea si los arroja. Si no puede capturar la pantalla, se agotará el tiempo de espera de todas sus decisiones y esa es una evidencia de bot bastante concluyente.
El tiempo lo dice, si un jugador de computadora responde a las opciones en milisegundos a la vez sin pausa para pensar en decisiones importantes, esto podría ser sospechoso.
Autocontrol. El sitio web de póquer pokertableratings.com extrae datos de muchos sitios grandes. Ha tenido una recepción mixta, algunos aman la transparencia, otros la odian . El beneficio es, sin embargo, que ha habido casos en los que las estadísticas de jugadores sospechosos (porcentajes de VPIP, porcentajes de PFR son algunas de una gran cantidad de estadísticas cuantificables que se pueden registrar) han llevado a conclusiones de trampa.
Las redes de clasificación artificialmente inteligentes podrían monitorear estadísticas cuantificables para clasificar a los jugadores robóticos o trampas deshonestos.
Cuando el póquer en línea era una entidad relativamente nueva, se rumoreaba y se hablaba con evidencia limitada de que algunos programas de software de clientes de póquer tomaban capturas de pantalla de los escritorios de jugadores sospechosos para ver si estaban ejecutando programas que los ayudaran. Sin embargo (incluso si esto fuera cierto) ejecutar dos computadoras para realizar las dos tareas de forma independiente evitaría esto.
Compartir información entre infractores reincidentes entre varios sitios sería beneficioso para la industria, si solo fueran honorables y estuvieran dirigidos por personas responsables competentes.
Algunos bots probablemente serían bastante simples por diseño, si pudieras descubrir su estilo de juego y ver cómo actúan en situaciones idénticas (ten en cuenta que esto solo es posible con bots poco sofisticados que juegan una estrategia muy básica), podrías descubrirlos razonablemente rápido.
El uso inconsistente de las funciones del programa se inclinaría hacia que un jugador sea genuino. Tomemos, por ejemplo, que muchos sitios de póquer en el juego tienen un botón "Retirar cuando es mi turno". Si te reparten una mala mano y estás esperando que otro jugador decida qué hacer, muchos jugadores marcarán este botón. Un bot puede usar estos botones. La diferencia es que un bot estaría en los extremos de la frecuencia de uso, probablemente lo usarían todo el tiempo o no lo usarían en absoluto. Mientras que un jugador normalmente puede presionar 'plegado automático', pero a veces hará clic en plegar de todos modos incluso en las condiciones más favorables. Por ejemplo, un jugador genuino usualmente presiona auto-plegado, pero esta vez no lo hace. Se les ha retirado sin que ningún otro jugador actúe, ahora se les ha presentado la condición más favorable posible. Ahora bien, si presionan plegar, habrían estado muy inclinados a presionar plegado automático desde el principio. Este es un comportamiento inconsistente / no optimizado / aleatorio, consistente con ser un ser humano. El tiempo dice cuándo se hace clic en estas funciones son otros indicadores. Es importante reconocer que todos estos son indicadores y no una prueba concluyente. Todos estos indicadores de comportamiento se pueden simular fácilmente.
Derrotar a un bot desde la perspectiva de los jugadores
Intente registrar y recopilar la mayor cantidad de datos posible utilizando un software como PokerTracker
Intenta identificar patrones en su estilo de juego.
Intente encontrar relaciones entre el tamaño de la apuesta en proporción al bote / número de jugadores y la fuerza de la mano
Intente calcular sus rangos de manos . Un bot de apuestas bajas probablemente no estará faroleando con la frecuencia suficiente para ser una preocupación estratégica significativa, por lo que construir rangos de manos altamente precisos no debería ser demasiado complicado.
Intente encontrar fugas en su juego a través del análisis de datos y prueba y error. Una vez que se hayan encontrado fugas / patrones, intente explotarlos repetidamente y evite cualquier otra situación.
Donde un ser humano es capaz de adaptarse , los bots probablemente lo sean menos, y donde los humanos están cargados por las cadenas de inclinación , pensamiento orientado a resultados y frustraciones , los bots no. Puedes usar esto a tu favor.
Entonces, en esencia, no hay nada que pueda hacer para detenerlo si el robot es lo suficientemente inteligente como para simular retrasos de tiempo reales durante las decisiones, así como para crear patrones de juego razonables y realistas. Agregue algunas condiciones aleatorias y una simple charla trasera (el léxico de los jugadores de póquer suele ser bastante limitado ) y tendrá un jugador de IA que será bastante difícil de detectar.
Qué pueden hacer los bots para evitar la detección
La clave para evitar la detección sería pensar en el problema desde tantos ángulos como sea posible. Estás intentando simular el comportamiento humano inteligente en un mundo muy pequeño y restrictivo. La mayoría de las simulaciones de comportamiento que puede ejecutar son bastante obvias, pero cuanto más inconsistente e impredecible sea su bot, es menos probable que lo descubran.
Cree horarios de juego realistas (es decir, de 3 a 5 veces a la semana, 4 horas por sesión con las semanas impares aquí y allá durante el año).
Ejecute programas para tomar decisiones en una computadora separada, controlando una computadora zombi en caso de que cualquier sitio capture la pantalla.
Aleatorice los tiempos de acción (no actúe de inmediato, espere entre 0,5 y 2 segundos por acción)
Tiempo de espera para las grandes decisiones. Si una decisión está en el límite, calcule la decisión y luego espere un poco para simular el pensamiento.
Uso aleatorio de las funciones del software del cliente. Simule las pausas para ir al baño haciendo clic en el botón "repartirme" en todas las mesas y tenga un descanso de 5 minutos de vez en cuando.
El chat simulado, el chat de póquer es a menudo muy simple, nunca suele ser una discusión o un debate. Diga cosas como "mala suerte" o "stfu" en los momentos detectables apropiados. O incluso hacer que el codificador controle su bot y participe en el chat durante la ejecución.
Asegúrese de que los movimientos del mouse sean realistas. Si las tablas están en mosaico , no tome una decisión en la tabla superior izquierda y luego haga instantáneamente en la tabla inferior derecha. La mayoría de software de sitios ahora ofrece atajos de teclado, que pueden ser preferibles para usar como se supone que para el movimiento del mouse.
Haga cosas que simplemente los clasificadores de IA no esperarían. Por ejemplo, una vez al año, llámelos por teléfono con una consulta sencilla y no compleja ("¡Ayuda, no puedo iniciar sesión hoy!" O "¡Internet no funciona!"). Es poco probable que marque una gran diferencia, pero si la persona que trabaja para el La compañía de póquer es lo suficientemente inteligente como para haberla reconocido como un indicador confiable.
Sesiones perdedoras esporádicas. La inclinación se puede simular y el bot puede jugar mal y perder algo de dinero de vez en cuando. Todo el mundo se inclina en algún momento.
La preocupación también es que a los sitios web de póquer no les importa particularmente si los bots se ejecutan en sus redes, cada jugador vale una gran cantidad de rake y, teóricamente, desde un punto de vista comercial puramente cínico, el único inconveniente sería la mala prensa si se descubriera. .
Incluso cuando se hayan descubierto hazañas flagrantes (busque en Google los escándalos de la red Cereus o Absolute Poker Scandal , es bastante impactante), el negocio parece sobrevivir y mantenerse saludable, solo perdiendo jugadores bien educados y ganadores (de los cuales no hay muchos). Esto aumenta la proporción de jugadores menos hábiles en la red, lo que a su vez atrae a los buenos jugadores. Es un buen truco 22. Un excelente argumento para una regulación adecuada del mercado.
Es importante señalar que para cada juego existe un equilibrio nash . El póquer en línea tiene una línea de tiempo de la forma en que se ejecuta ahora, tendrá que pasar a algo más social (cámara web / voip) para que cualquiera pueda confiar en él en el futuro (si la gente confía en él) ya que los bots eventualmente se harán cargo tan matemáticamente superior y psicológicamente inmune. La comunidad de IA del póquer es muy activa , impulsada por la academia y / o el beneficio capital.
Las versiones más simples de póquer, como el póquer con límite, casi se han resuelto en pequeños espacios de búsqueda. Es solo cuestión de tiempo antes de que las versiones más complejas del juego (variaciones sin límite / Omaha con límite de bote, etc.) se vuelvan vencidas para los jugadores artificiales.
Conclusión
Los bots sofisticados simplemente no se pueden detectar hasta que la industria cambia a un entorno de juegos en línea más social. Esto no resolverá el problema, pero ciertamente dificultará que los bots ganen en los niveles inferiores. Ya hemos visto un ligero cambio con el lanzamiento de PKR , 3D y una versión más interactiva. versión , con menos manos por hora, de los otros sitios donde la multimesa es bastante difícil de lograr para un jugador.
El problema también se debe a la naturaleza de la industria, otra razón más para atenerse a los sitios web más grandes y de mayor reputación, donde la reputación se ha integrado cada vez más en su modelo de negocio. La falta de transparencia y la transacción fingida no ayudan a la causa.
El verdadero desafío para los desarrolladores de bots actualmente es escribir un algoritmo ganador, esto no es tan trivial como parece. Todos los que juegan al póquer se consideran buenos, ganadores o un jugador de equilibrio, lo que simplemente no es cierto. Es por eso que la gente sigue jugando, incluso cuando pierden dinero porque están bajo la ilusión de que simplemente tienen mala suerte o su estilo de juego es incomprendido. Esta arrogancia y debilidad en la psicología humana ha costado a los jugadores perder mucho dinero y es la razón fundamental por la que el póquer aún puede ser rentable.
El póquer es un juego enormemente complicado en el que se necesitan años para volverse bueno (el viejo dicho sigue siendo cierto, "Diez minutos para aprender, toda una vida para dominar"). El elemento suerte es extremadamente limitado a largo plazo.
Como cualquier otra profesión, para ser bueno es necesario estudiar cientos y cientos de horas y jugar muchos miles. Comprenderá cosas que los jugadores menos experimentados no entenderán, detectará las cosas que los menos experimentados no detectarán. El aprendizaje continúa durante mucho, mucho tiempo, quizás más de lo que podamos vivir. Es un juego complicado.
¿Con qué frecuencia ha visto un juego de dinero en efectivo de alto riesgo en la televisión y escuchó a alguien gritarle "¡Es una decisión fácil!" De esta manera, demostrar que los aficionados realmente no comprenden ni reconocen la sofisticación en el juego, y realmente creen que el juego a ese nivel sigue siendo, en última instancia, simple. No lo es. Esos jugadores de altas apuestas (una gran parte del tiempo) hay en la televisión, ya que son muy muy muybueno. Probablemente también se esté jugando un metajuego complicado, del cual nuestro aficionado no puede reconocer la existencia. El amatuer no se pararía junto a un maestro de ajedrez y le gritaría que moviera su caballo, sin embargo, debido a que la dinámica del póquer es información imperfecta, su psicología les hace realmente creer lo que están diciendo. Al igual que en el ajedrez, las decisiones pueden ser complejas, sensibles y extremadamente importantes para el juego en general. A medida que el juego aumenta en complejidad, las decisiones triviales ya no son tan triviales, porque tu oponente las espera.
Una vez que mueva su bot o su juego en los niveles, inevitablemente se encontrará con una población más grande de jugadores más hábiles. Entonces, la complejidad de su estrategia tendrá que subir al siguiente nivel, teniendo en cuenta las imágenes de la tabla , el equilibrio de rango , el farol sofisticado e inteligente (es decir, no solo farolear ante la debilidad, farolear en los rangos y farol en la imagen, etc.), con análisis más detallado del alcance de la mano. Realmente es un juego diferente a medida que avanzas.
Una vez que se ha escrito un bot ganador, sin duda el programador tendrá la habilidad, el conocimiento y el sentido común suficientes para aplicar el bot de una manera indetectable. Esto es trivial para ellos.
Entonces realmente no hay nada que puedas hacer. Si quieres jugar en línea, comprende los riesgos. Nunca arriesgue más dinero del que puede pagar, e intente mantener registros precisos de los gastos para no tener una sobreestimación equivocada, poco realista y, en última instancia, perjudicial de su propia capacidad. ¡Haga stop loss y abandone la mesa si no tiene ventaja o si no está seguro de tener ventaja! Por supuesto, si todos hicieran que nadie ganaría, esa es la naturaleza depredadora y explotadora del juego, de ahí proviene la competencia y eso es lo que lo hace divertido.
fuente
Hay tres áreas separadas a considerar. El bot tiene que averiguar el estado de la mesa, tomar una decisión y enviar la decisión al anfitrión.
Determinar el estado de la tabla es mucho más fácil si se envía a través del cable de alguna forma reconocible o se muestra al usuario como texto estándar. Primero, haga que el reconocimiento de imágenes sea la única opción, luego hágalo lo más difícil posible. Muestre las tarjetas en 3D y cambie lentamente la orientación y posición de las tarjetas. Anime pequeños parpadeos o fuegos artificiales frente a las tarjetas para que cualquier captura de pantalla sea ilegible, pero se necesita un tiempo para determinarlo.
No hay nada que hacer para tomar la decisión. Tratar de decidir si una decisión fue tomada por un humano o no es como una prueba de turing sin casi información.
Devolver la decisión puede resultar difícil si se vuelve a utilizar 3D. Haga que sea difícil enviar paquetes directamente o enviar una decisión por cualquier medio que no sea hacer clic en un botón con el mouse. Mueva los botones ligeramente con cada acción o haga que floten lentamente alrededor del área de juego mientras espera una decisión. Desactive cualquier función de tipo de accesibilidad que permita encontrar o manipular botones.
fuente
PokerPirate, como casi todos los bots de póquer jamás escritos, funciona raspando la pantalla y simulando clics del mouse en una aplicación de póquer de Windows. Por lo tanto, la clave para el sistema es su capacidad para reconocer objetos en el juego y realizar acciones en la ventana. Por muy inteligente que sea en el póquer, es probable que todavía tenga problemas con estas operaciones básicas.
Por lo tanto, las formas obvias de frustrar este bot incluirían:
fuente
Idealmente, la única solución válida es crear una lógica honeypot que atraiga a un bot comprometido al proporcionar la tentación de una condición lógica más favorable que favorezca las respuestas de comportamiento más ideales del bot. Una vez que el bot está involucrado en el honeypot, debe alimentar continuamente las condiciones del bot que prefiere, asumiendo que el bot no tiene un tiempo de espera establecido. Luego, el bot puede medirse, registrarse y estudiarse. Además del bot, también tendría la red y los datos de sesión aislados para su estudio, siempre que el bot no se conecte a través de TOR.
En esta situación, las consideraciones deterministas adecuadas para diferenciar un bot de un humano son menos severas; sin embargo, la consideración determinista al identificar el comportamiento del bot se vuelve más severa. Desafortunadamente, el propietario del bot puede realizar cambios en el bot para evitar dicha identificación si ese propietario conoce la condición del honeypot, o la consideración lógica de la misma.
fuente
Derrotar a los bots de póquer puede tomar dos formas: puede intentar identificarlos y bloquearlos del sistema, o simplemente puede vencerlos en el póquer. Vencerlos en el póquer es la cuestión académica más interesante. :-)
Vea aquí algunos artículos sobre cómo vencer a los robots de póquer: http://www.cs.cmu.edu/~sganzfri/
fuente
Mira esta publicación
Esta publicación también tiene algunos buenos consejos sobre cómo frustrarlos.
fuente
Otro pensamiento sobre jugar con la pantalla para que sea difícil de escanear:
Haga la tarjeta con una gran cantidad de colores diferentes, cercanos en términos del ojo humano, pero no iguales. Esto dificultaría la selección de las cosas para leer. Por otro lado, ponga escritura falsa en la tarjeta en colores que el ojo humano no separe del fondo.
fuente
¿El problema con los bots es el hecho de que juegan mejor que los jugadores humanos decentes, o que pueden esperar 24 horas al día, 7 días a la semana, a que aparezcan malos jugadores y luego tratar de exprimirlos?
Además, ¿sería "legítimo" o "trampa" que alguien tuviera una computadora junto a él mientras jugaba al póquer, consultando a esa otra computadora en busca de consejo?
No estoy seguro de cómo se puede afirmar que el espacio de solución para el póquer con límite está "resuelto" cuando la estrategia óptima para un jugador se verá influenciada por lo que se sabe sobre los oponentes. ¿Cómo puede cualquier intento de analizar a los jugadores afirmar que es tan perfecto que no se puede mejorar?
fuente
Si tiene acceso a muchas coincidencias, puede adoptar un enfoque de minería de datos. La fuerza de juego de una IA debería ser bastante constante, aunque probablemente haya patrones simples para los humanos: más débil en las primeras rondas de calentamiento y la fuerza se deteriora después de jugar durante mucho tiempo. Además, los tiempos de decisión humana probablemente aumentan cuando hay más dinero en juego.
Si tiene acceso a los movimientos del mouse (o al menos haga clic en las ubicaciones, lo cual es cierto incluso para las aplicaciones web), debería ser bastante simple reconocer los bots, excepto los más sofisticados. Los humanos no mueven el mouse en una línea recta exacta, tienen períodos de aceleración y desaceleración, distribuciones de ubicación de clic estadísticamente descripbles, etc.
fuente
Eche un vistazo a Ajax Control Toolkit NoBot :
fuente
Una solución al 100% es imposible, lo que me propongo es una solución que ahorrará dinero al usar la IA contra sí misma. Tenga una instancia de la IA de PokerPirate ejecutándose en el lado del servidor y jugando como un jugador invisible en cada juego. Si algún jugador realiza demasiadas acciones idénticas, probablemente esté ejecutando una instancia de PokerPirate. Se trata de un tipo de Honeypot o trampa en la que el atacante pueda caer. El atacante puede defenderse de este honeypot haciendo que su bot tenga menos éxito. Por lo tanto, esto está creando un came de "Cat and Mouse" en el que el atacante siempre puede robar algo de dinero y el defensor siempre puede ahorrar algo de dinero.
fuente
"We've been working on categorizing and understanding styles of play, [...] it gets more difficult in games against top players because they mix up their play deliberately to confuse you." Being unpredictable is a good strategy, he adds. "If our computer is going to beat the world champion, it's got to do something similar."
Hay formas mucho más sencillas. si. muchas de las sugerencias son correctas y necesarias. pero alrededor del 90% de los fraudes se detectan de manera demasiado simple.
si alguien deja que un bot funcione para él, después de un tiempo querrá que un segundo bot funcione para él. (otra máquina o lo que sea) pero: usará la misma contraseña, ya que es difícil de recordar 2 (<--- sarcástico)
lo que queda: verifique las cuentas con el mismo comportamiento de juego y el mismo hash de contraseña.
fuente