Derrotar a un Bot de Poker


Hay un nuevo bot de poker de Código abierto llamado PokerPirate. Estoy interesado en cualquier forma creativa en la que una aplicación web podría detectar/frustrar/derrotar a un bot de poker. (Esta es una discusión puramente académica, en el mismo espíritu que PokerPirate fue escrito.)

Author: rook, 2010-04-27

12 answers

Derrotar a un bot desde la perspectiva del servidor

  1. Muchos sitios de póquer en línea utilizan popup Captcha entradas que se activan por sospechosa.

  2. Algunos sitios de poker monitorean el juego tiempos y patrones (es decir, el peor de los casos escenario es un jugador que juega 24x7 y 16 tablas continuamente, hay una pequeña pequeña oportunidad esto es un verdadero humano. (Sin embargo, algunos jugadores tienen la capacidad de jugar volúmenes de manos muy grandes que a la ojo inexperto parece ser un bot)

  3. Lanza fallos. Si sospecha una jugador es un bot, cambiar todos sus naipes posiciones de unos pocos píxeles en la pantalla, hacerlos diferentes colores/diseños/patrones para 1/100 manos y ver si tira ellos. Si no puede pantalla grabarlo tendrá tiempo fuera en todas sus decisiones y eso es bastante concluyente bot evidencia.

  4. Tiempo dice, si un jugador de la computadora responde a las opciones en milisegundos en un momento sin pausa para pensar en grandes decisiones esto podría ser sospechoso

  5. Autocontrol. El sitio web de poker pokertableratings.com datos minas un montón de sitios grandes. Tiene recibido con una recepción mixta, algunos aman la transparencia, otros lo odio . El beneficio es, sin embargo, que ha habido casos donde jugador sospechoso estadísticas (porcentajes VPIP, Los porcentajes de PFR son algunos de los grandes número de estadísticas cuantificables que se puede grabar) han llevado a conclusiones del engaño

  6. Inteligencia Artificial las redes de clasificación podrían monitorear estadísticas cuantificables para clasificar engaño rogue o robótico jugador.

  7. Cuando el póquer en línea era bastante nueva entidad, hubo rumores y conversaciones con pruebas limitadas de que algún software de cliente de poker capturas de pantalla de jugadores sospechosos escritorios para ver si se estaban ejecutando programas que les ayuden. Sin embargo (incluso si esto fuera cierto) ejecutar dos computadoras para realizar las dos tareas de forma independiente evitaría esto.

  8. Compartir información entre repeticiones delincuentes entre varios sitios sería beneficioso para la industria, si solo fueran honorables y dirigidos por personas competentes y responsables

  9. Algunos bots probablemente serían bastante simple por diseño, si usted podría descubrir su estilo de juego y ver cómo actúan en situaciones idénticas (tenga en cuenta esto solo es posible con bots poco sofisticados jugando muy estrategia básica) usted podría descubrir ellos razonablemente rápido.

  10. Uso inconsistente del programa características se inclinaría hacia una el jugador es genuino. Toma para ejemplo muchos sitios de poker en el juego tener un 'Doblez cuando es mi turno' botón. Si te reparten un mal mano y están esperando a otro jugador para decidir qué hacer, mucho de los jugadores marcarán este botón. Un bot puede usar estos botones. El la diferencia es, un bot estaría en el extremidades de frecuencia de uso, probablemente las usarían todo el tiempo, o no las usarían en absoluto. Whereas un jugador puede presionar generalmente 'autofold', pero a veces lo harán haga clic en doblar de todos modos, incluso en la mayoría condiciones favorables. Por ejemplo, un jugador genuino generalmente presiona plegado automático, pero esta vez no lo hacen. Se dobla alrededor de ellos sin otro jugador actuando, ahora tienen se ha presentado con la mayoría condiciones favorables posibles. Ahora si presionan pliegue, tendrían ser muy inclinado a presionar autofold desde el principio. Esto es inconsistente / no optimizado / aleatorio comportamiento, consistente en ser un humano. El tiempo indica cuando se hace clic en estas características son otros indicadores. Es importante reconocer que todos estos son indicadores y no pruebas concluyentes. Todos estos indicadores de comportamiento se pueden simular fácilmente.

Derrotar a un bot desde la perspectiva de los jugadores

  1. Tratar de registrar y recopilar tantos datos como posible utilizando software como PokerTracker

  2. Intentar identificar patrones en su estilo de juego

  3. Intentar encontrar relaciones entre el tamaño de la apuesta en proporción a pot / # jugadores y fuerza de la mano

  4. Intenta calcular sus rangos de manos . Un bot de apuestas bajas probablemente no faroleará con la frecuencia suficiente como para ser una preocupación estratégica significativa, por lo que construir rangos de manos altamente precisos no debería ser demasiado difícil.

  5. Intento de encontrar fugas en su juego a través de análisis de datos y prueba y error Una vez que las fugas / patrones tienen ha sido encontrado, intento de repetitivamente explotarlos y evitar cualquier otro situación.

Donde un humano es capaz de adaptación , los bots probablemente lo son menos, y donde los humanos son ponderados por las cadenas de inclinación, resultados pensamiento orientado y frustraciones, los bots no lo son. Puedes usar esto para tu ventaja.

Así que, en esencia, no hay nada que pueda hacer para detenerlo si el robot es lo suficientemente inteligente como para simular retrasos reales durante las decisiones, así como crear patrones de juego razonables y realistas. Lanzar en algunas condiciones aleatorias y simple back-chat (el léxico de los jugadores de poker es por lo general bastante limitado) y tienes un jugador de IA que va a ser bastante difícil de detectar.

Qué podrían hacer los bots para evitar la detección

La clave evitar la detección sería pensar en el problema desde tantos ángulos como sea posible. Usted está tratando de 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 es su bot, menos probable es que se descubra.

  1. Crea horarios de juego realistas (es decir, 3-5 veces a la semana, 4 horas por sesión con la semana impar aquí y allí fuera durante año).

  2. Ejecutar programas para tomar decisiones sobre ordenador separado, controlando un ordenador zombie en caso de que cualquier sitio captura de pantalla.

  3. Aleatorizar los tiempos de acción (no actúes inmediatamente, espere 0.5-2 segundos por acción)

  4. Tiempo perdido en las grandes decisiones. Si a la decisión es limítrofe, calcular la decisión a continuación, esperar un tiempo para simular el pensamiento.

  5. Uso aleatorio de las funciones del software cliente. Simular pausas para ir al baño haciendo clic frente me out button " en todos los mesas y tienen un descanso de 5 minutos de vez en cuando.

  6. Chat simulado, chat de poker es a menudo muy simple uno trazadores de líneas, nunca generalmente discusión o debate. Decir cosas como "mala suerte" o "stfu" en adecuado detectable momentos. O incluso tener el codificador de seguimiento de su bot y participar en el chat durante ejecución.

  7. Asegúrese de que los movimientos del ratón son realista. Si las tablas son mosaico no tomar una decisión sobre mesa superior izquierda y luego al instante hacer en la mesa de abajo a la derecha. La mayoría de los sitios de software ahora ofrecen atajos de teclado, estos pueden ser preferibles para utilizar como se supone que mousemovement.

  8. Hacer cosas que simplemente AI los clasificadores no estarán esperando. Para ejemplo, una vez al año llámalos con una simple consulta no compleja ("Ayuda no puedo ¡inicia sesión hoy!"o" El Internet está abajo!") Poco probable que haga mucha diferencia, pero si la persona que trabaja para la compañía de poker es lo suficientemente inteligente que podría haber reconocido como un indicador realiable.

  9. Sesiones perdidas esporádicas. La inclinación puede ser simulado y el bot puede jugar mal y perder algo de dinero de vez en cuando y luego. Todo el mundo se inclina en algunos punto.

La preocupación es también que los sitios web de poker no se preocupan particularmente si los bots se están ejecutando en sus redes, cada jugador vale una gran cantidad en rake y teóricamente desde un punto de vista empresarial puramente cínico, el único inconveniente sería la mala prensa si fuera descubrir.

Incluso cuando se han descubierto hazañas flagrantes, (buscar en Google escándalos de la red Cereus o Escándalo de Absolute Poker, 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 calificados en la red, lo que a su vez atrae a los buenos jugadores de vuelta. Es un buen viejo' fashioned catch 22. Un excelente argumento para una regulación adecuada del mercado.

Es importante tener en cuenta que para cada juego existe un equilibrio nash . Poker en línea tiene una línea de tiempo a la forma en que se ejecuta ahora, va a tener que pasar a algo más social (webcam/voip) para que cualquiera pueda confiar en él en el futuro (si la gente confía en él) como bots se hará cargo con el tiempo como matemáticamente superior, y psicológicamente inmune. La comunidad de poker AI es muy activa , impulsada por la academia y / o el capital beneficio.

Las versiones más simples de poker como limit poker han sido casi resueltas 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/Pot Limit Omaha, etc.) se vuelvan derrotables para los jugadores artificiales.

Conclusión

Los bots sofisticados no se pueden detectar hasta que la industria cambie a un entorno de juego en línea más social. Esto no resolverá el problema, pero sin duda haz que sea más difícil para los bots ganar en los niveles más bajos. Ya hemos visto un ligero cambio con el lanzamiento de PKR, 3D y una versión más interactiva , menos manos por hora de los otros sitios donde la multitabling es bastante difícil de lograr para un jugador.

El problema también sufre por 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. Falta de la transparencia y la transarancia fingida no ayudan a la causa.

El verdadero desafío actualmente para los desarrolladores de bot es escribir un algoritmo ganador, esto no es tan trivial como parece. Todos los que juegan al poker se consideran buenos, ganadores o un jugador de equilibrio, lo cual simplemente no es cierto. Es por eso que la gente sigue jugando, incluso cuando pierden dinero, ya que están bajo la ilusión de que simplemente tienen mala suerte, o su estilo de juego es malinterpretado. Esta arrogancia y la debilidad en la psicología humana le ha costado a los jugadores perder mucho dinero y es la razón fundamental por la que el poker todavía puede ser rentable.

El poker es un juego muy complicado que tarda años en ser bueno (el viejo adagio sigue siendo cierto, "Diez minutos para aprender, una vida para dominar"). El elemento suerte es extremadamente limitado a largo plazo.

Como cualquier otra profesión, para ser bueno, necesitas estudiar por cientos y cientos de horas, y jugar por muchos miles. Usted entender las cosas que los jugadores menos experimentados no entienden, irregular cosas con menos experiencia, no mancha. El aprendizaje continúa por un tiempo muy, muy largo, tal vez más largo del 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 ha escuchado a alguien gritarle "¡Eso es una decisión fácil!"por lo tanto, prooving que los aficionados realmente no entienden o reconocen la sofisticación en el juego, y realmente creer el juego en ese nivel sigue siendo en última instancia simple. No, no. Los high stakes los jugadores (mucho tiempo) que hay en la televisión porque son realmente realmente realmente bueno. Probablemente también se esté jugando un metajuego complicado, del que nuestro amauer no puede reconocer la existencia. El amatuer no se pararía sobre un maestro de ajedrez y gritarles para mover su caballo, sin embargo, debido a la dinámica de poker es información imperfecta su psicología les hace creer realmente lo que están diciendo. Al igual que en el ajedrez, las decisiones pueden ser intrincadas, 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 muevas tu bot o tu juego por los niveles, inevitablemente te encontrarás con una gran cantidad de jugadores más hábiles. Entonces, la complejidad de su estrategia va a tener que ir al siguiente nivel, teniendo en cuenta imágenes de tabla, equilibrio de rango, farol sofisticado e inteligente (es decir, no solo farolear en debilidad, farolear en rangos y farol en imagen, etc.), con un análisis de rango de mano más detallado. Realmente es un juego diferente a medida que sube.

Una vez que se ha escrito un bot ganador, sin duda el codificador tendrá suficiente habilidad, conocimiento y sentido común para aplicar el bot de una manera indetectable. Esto es trivial para ellos.

Así que realmente no hay nada que puedas hacer. Si quieres juega online, entiende los riesgos. Nunca arriesgue más dinero del que puede permitirse, e intente mantener registros precisos de los gastos para que no tenga una estimación errónea, poco realista y, en última instancia, perjudicial de su propia capacidad. Tener stop loss, y salir de la mesa si usted no tiene un borde, o si usted no está seguro de si usted tiene un borde! Por supuesto, si todo el mundo lo hiciera nadie ganaría, esa es la naturaleza depredadora y explotadora del juego, de ahí viene la competencia y eso es lo que lo hace divertido.

 209
Author: Tom Gullen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-04 19:51:54

Hay tres áreas separadas a considerar. El bot tiene que averiguar el estado de la tabla, tomar una decisión y enviar la decisión de vuelta al host.

Averiguar 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. Muestra las tarjetas en 3D y cambia lentamente la orientación y posición de las tarjetas. Animar pequeños parpadeos o fuegos artificiales frente a las cartas, por lo que cualquier captura de pantalla puede ser ilegible, pero toma un tiempo incluso para determinar eso.

No hay nada que hacer con la toma de la decisión. Tratar de decidir si una decisión fue tomada por un humano o no es como una prueba de turing con casi ninguna información.

El envío de la decisión de vuelta puede ser difícil mediante el uso de 3D de nuevo. Hacer 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 ratón. Mueva los botones ligeramente con cada acción o haga que floten lentamente alrededor del área de juego mientras espera una decisión. Deshabilite cualquier característica de tipo de accesibilidad que permita encontrar o manipular botones.

 9
Author: drawnonward,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-27 00:39:34

PokerPirate, como casi todos los bot de poker jamás escritos, funciona mediante el raspado de pantalla y la simulación de clics del ratón en una aplicación de poker de Windows. Por lo tanto, el lynch-pin al sistema es su capacidad de reconocer objetos en el juego y realizar acciones en la ventana. Tan inteligente como puede ser en el póquer, es probable que todavía tiene problemas con estas operaciones básicas.

Por lo tanto, las formas obvias de frustrar este bot incluirían:

  1. Implementar un CAPTCHA, ya sea antes del juego, o cuando otro los factores sugieren que un jugador puede ser un bot.
  2. Haz que los gráficos de la mesa sean más complicados o cambia de tema a lo largo del juego.
  3. Detectar movimientos y clics inusualmente rápidos y/o robóticos del ratón (un humano nunca moverá un ratón en una línea matemáticamente perfecta).
 8
Author: Cerin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-01 13:08:13

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 suponiendo que el bot no tiene un tiempo de espera establecido. Entonces el bot puede ser medido, registrado y estudiado. Además del bot, también tendría aislados los datos de la red y la sesión para el 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 hacer cambios en el bot para evitar dicha identificación si ese propietario es consciente de la condición del honeypot, o la consideración lógica de la misma.

 5
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-27 06:05:04

Derrotar a los bots de poker puede tomar dos formas: puedes tratar de identificarlos y prohibirlos del sistema, o simplemente puedes vencerlos en el poker. Ganarles en el poker es la pregunta académica más interesante. :-)

Vea aquí algunos artículos sobre vencer a los robots de poker: http://www.cs.cmu.edu / ~sganzfri /

 4
Author: Aaron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-02 20:24:34

Mira este post

Este post también tiene algunos buenos consejos sobre cómo detenerlas.

 3
Author: Romain Hippeau,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:45:55

Otro pensamiento sobre jugar con la pantalla para que sea difícil de escanear:

Hacer la tarjeta de un montón de diferentes colores close cerca en términos de ojo humano, pero no lo mismo. Esto haría más difícil elegir las cosas para leer. Por otro lado, ponga la escritura falsa en la tarjeta en colores que el ojo humano no separará del fondo.

 2
Author: Loren Pechtel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-02 21:44:23

¿Es el problema con los bots el hecho de que juegan mejor que los jugadores humanos decentes, o que pueden esperar alrededor de 24/7 a que aparezcan los malos jugadores y luego tratar de ordeñarlos?

Además, ¿sería "legítimo" o "hacer trampa" que alguien tuviera una computadora sentada a su lado mientras jugaba al póquer, consultando a esa otra computadora para obtener consejos?

No estoy seguro de cómo uno puede reclamar que el espacio de solución para limit poker se "resuelve" 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 son tan perfectos que no se pueden mejorar?

 2
Author: supercat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-02 22:51:16

Si tiene acceso a muchas coincidencias, puede tomar un enfoque de minería de datos. La fuerza de juego de una IA debe ser bastante consistente, mientras que probablemente hay 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 suben cuando hay más dinero en juego.

Si tiene acceso a los movimientos del ratón (o al menos haga clic en ubicaciones que es cierto incluso para aplicaciones web), debe ser bastante simple de reconocer bots, excepto por los más sofisticados. Los humanos no mueven el ratón en una línea recta exacta, tienen períodos de aceleración y desaceleración, distribuciones de ubicación de clic estadísticamente describibles, etc.

 1
Author: Tgr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-03 08:46:44

Echa un vistazo a Ajax Control Toolkit NoBot :

NoBot emplea algunas técnicas anti-bot diferentes:

* Forcing the client's browser to perform a configurable JavaScript calculation and verifying the result as part of the postback. (Ex: the calculation may be a simple numeric one, or may also involve the DOM for added assurance that a browser is involved)

* Enforcing a configurable delay between when a form is requested and when it can be posted back. (Ex: a human is unlikely to complete a form in less than two seconds)

* Enforcing a configurable limit to the number of acceptable requests per IP address per unit of time. (Ex: a human is unlikely to submit the same form more than five times in one minute)
 1
Author: lmsasu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-09 08:02:23

Una solución al 100% es imposible, lo que estoy proponiendo es una solución que ahorrará dinero al usar la IA contra sí misma. Tener una instancia de la IA de PokerPirate ejecutándose en el lado del servidor y jugando como un jugador invisible en cada juego. Si cualquier jugador realiza demasiadas acciones idénticas, entonces probablemente esté ejecutando una instancia de PokerPirate. Esta es una especie de Honeypot o trampa en la que el atacante puede caer. El atacante puede defenderse de este honeypot haciendo su bot menos exitoso. Por lo tanto, esto está creando un vino de "Gato y ratón" en el que el atacante siempre puede robar algo de dinero y el defensor siempre puede ahorrar algo de dinero.

 0
Author: rook,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-02 19:28:51

Hay maneras mucho más fáciles. Sí. 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 trabaje para él, él, después de algún tiempo, querrá que un segundo bot esté trabajando para él. (otra máquina o lo que sea) pero: usará la misma contraseña, ya que es difícil de recordar 2 (

Lo que queda: compruebe las cuentas con el mismo comportamiento de juego y el mismo hash de contraseña.

 -2
Author: cRichter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-09 11:33:49