Pages:
Author

Topic: Como lo haces Ddmr? (Turbo Meritos) (Read 238 times)

legendary
Activity: 3906
Merit: 6249
Decentralization Maximalist
June 26, 2024, 07:55:27 PM
#24
Lo que sigo sin tener claro es por que lo quieres hacer desde python?
Es simplemente por conveniencia. No domino JavaScript tanto como Python y nunca realmente trabajé con la consola del navagador  Embarrassed

Quizá igual tendré en cuenta a tu idea para la parte que reparte los méritos, dependiendo cuán seguros me parezcan los métodos nativos posibles en Python, como usar la cookie de sesión o loguearme de manera independiente a través de Python. Tendría que ver como funciona la consola. El desafío obviamente en este caso sería pasar los datos que ya almacené con Python (la lista de los méritos pasados, que me gustaría almacenar en mi disco) al script que activo en la consola.

@womanderful: ¡gracias por la idea de la cookie! Sé más o menos como acceder a los keyring (los que almacenan las contraseñas), así que almacenar la contraseña allí de manera encriptada sería otra opción.
legendary
Activity: 3220
Merit: 3009
June 25, 2024, 10:47:33 AM
#23
...

Lo que sigo sin tener claro es por que lo quieres hacer desde python?

Desde mi punto de vista es mas fácil hacerlo directo desde el navegador web, por eso había propuesto Java Script desde la consola, de esta manera nos evitamos el inicio de sesión ya que esta la sesión está activa en el navegador.

Otras opciones podrían ser Imacros, O incluso software para testing como lo es Selenium.

Recuerdo hace varios años que hacía proceso automatizados, generaba el script de Imacros con bash y lo ejecutaba directo desde la terminal. Al final hay muchas maneras y muchos lenguajes para abordar esto.
sr. member
Activity: 494
Merit: 476
June 25, 2024, 06:27:43 AM
#22
Ahora bien, preferiría no almacenar mi contraseña en texto sin cifrar, por eso voy a ver como hago lo de los credentials.

Igual puedes tomar la cookie del navegador y usarla en python. En el primer resultado de duckduckgo ya me sale alguna pista: https://stackoverflow.com/questions/31554771/how-can-i-use-cookies-in-python-requests

Otra opción sería que el python cuando lo ejecutes te pidiera los credenciales, se autenticara y luego se quedara funcionando 24/7 como un daemon, y entonces ya guardaría la cookie en memoria.

En ambos casos hay que tener en cuenta que la cookie puede expirar en cualquier momento (eg. actualizan/reinician el servidor y con el reinicio se pierden todas las sesiones de todo el mundo) y cuando eso suceda te tienes que enterar en tiempo y forma.
legendary
Activity: 3906
Merit: 6249
Decentralization Maximalist
June 24, 2024, 02:49:17 PM
#21
¡Gracias DdmrDdmr! Sí, me había imaginado que algo se podía hacer con el token de autenticación. Ahora bien, preferiría no almacenar mi contraseña en texto sin cifrar, por eso voy a ver como hago lo de los credentials.

Con respecto a lo de los archivos de texto, ya implementé un mecanismo de "scraping" con lxml.etree. Lo había usado en otras ocasiones ya, como mi lista de altcoins descentralizadas (dónde accedo a Coingecko para los datos). El único pequeño "desafío" fueron los méritos que doy el mismo día cuando bajo la página, ya que en este caso no se ve la fecha sino "Today", y este elemento, al ser en negrita, corre el "árbol" de etree de esta fila a la derecha, necesitándose un pequeño if/else adicional. Añado cada item en esta lista a un diccionario con los números de posts como keys. Por supuesto puede ocurrir que merito un post más de una vez, por eso el dict tiene un item llamado meritAction que registra la fecha y la cantidad de méritos, es decir puede haber varias meritActions por post.

No creo que llegue a terminar el script hoy pero esa semana está dentro de lo posible.

@seoincorporation: Gracias, aunque en este caso el problema no fue que había varios formularios sino que simplemente la página me redireccionó al login porque no estaba "logineado" con mi script.
legendary
Activity: 3220
Merit: 3009
June 24, 2024, 10:19:22 AM
#20
Con respecto al login, la forma que ha icho Ddmr para saltarse el captcha es la forma correcta de automatizar este proceso. El token de autentificación es una solución que se implemento en el foro no solo para poder automatizar procesos, sino que para los usuarios que quieran navegar a través de proxis o incluso con TOR.

Ahora bien, el punto de "meritar" todavía no me sale. Copié el código de @seoincorporation y de hecho accede al sitio, pero el valor para input_merits es siempre None, es decir no encuentra el formulario correcto.

Aquí el tema es que la página detecta dos formularios uno es el formulario de búsqueda:
Code:


 



Y otro e el formulario de méritos:

Code:

Poster: JMBitcointernational
Post: Have you achieved anything from gambling
Merit points:


Para seleccionar entre estos 2, no tengo claro como sea en la Serpiente, pero tal vés te sirve de referencia el código de JS:

Code:
let form = document.querySelector('form input[name="merits"]').closest('form');

Por lo menos ya has detectado el problema, y es él primer paso para encontrar la solución.
legendary
Activity: 2338
Merit: 10802
There are lies, damned lies and statistics. MTwain
June 23, 2024, 11:53:03 AM
#19
<…> ¿Alguna idea? <…>
En lo relativo al primer punto, donde buscas las TXs o posts que ya meritaste en el pasado, comentar que tienes la alternativa de utilizar el archivo oficial, generado cada viernes, de TXs de Méritos. Este archivo es delimitado en el tiempo, y cubre únicamente los últimos 120 días de TXs si mal no recuerdo.

El formato es del estilo de:
Code:
time amount msg user_from user_to
1718937955 2 5500470.msg64233791 85033 2739424
1718937830 1 5500401.msg64231616 85033 334783
1718927821 3 4657305.msg64226426 85033 405482
<…> En tu caso, son 531 registros, relativos a 886 Méritos.
Puede que sea más ágil trabajar la base así, aunque como el fichero semanal cubre los últimos 120 días, habría que jugar a acumularlos y resolver los solapes, o bien jugar con una fecha de corte soporte para cada iteración de la serpiente. Yo personalmente los tengo todos acumulados en una BD desde los inicios, y cada semana agrego el nuevo, donde los solapes reemplazan las entradas existentes precedentes.

En lo relativo a la serpiente, no te creas que la domino mucho (apenas de hecho). Ésta, efectivamente, se ha de loginear, y para evitar el captcha, puedes usar tu token del captcha bypass del foro:

Code:
session_requests = requests.session()

Credentials = {
'user': 'TuUsuarioDelForo,
'passwrd': 'TuContraseña',
    'cookieneverexp': 'on',
    'hash_passwrd': ''
}

login_url = "https://bitcointalk.org/index.php?action=login2;ccode=TuCaptchaBypass"
result = session_requests.post(login_url,data=Credentials)
print("Login result code:" + str(result.status_code))

A partir de allí recuerdo que la serpiente tuvo que hacer algún apaño más para mantener la sesión abierta en su cometido, pero no sé si esto era por mi poca pericia o qué con entender el idioma de la serpiente. Si te sucede lo mismo (problemas con la sesión) seguimos desvelando las entrañas de la serpiente...
legendary
Activity: 3906
Merit: 6249
Decentralization Maximalist
June 23, 2024, 01:32:05 AM
#18
Bueno, posiblemente pronto verán otro bot dando vueltas con los poderes de la serpiente Smiley

Sin embargo, me topé con un problema. Ya tengo el script de "la serpiente" armado, me baja bien la página de los méritos y la convierte en un formato más ameno para que la serpiente lo digiera, y puedo aplicar una fórmula para meritar los posts que he meritado en el pasado, por ejemplo en los últimos 60 días (Una vez que el script ande, lo puedo publicar si les interesa).

Ahora bien, el punto de "meritar" todavía no me sale. Copié el código de @seoincorporation y de hecho accede al sitio, pero el valor para input_merits es siempre None, es decir no encuentra el formulario correcto.

Me fijé y creo que ya sé cual es el problema: me tendría que loguear a través de Python/Requests también (en realidad es obvio, pensándolo bien ...). Es decir, lo que hace si corro el script para meritar, es que me redirecciona a la página del login en Bitcointalk, y por eso no encuentra el formulario de los méritos. Pero hay un pequeño problema: hay un CAPTCHA. Bastante obvio también, porque sino sería completamente ilegible el foro, me parece ...

¿Alguna idea? Smiley
legendary
Activity: 1162
Merit: 2025
Leading Crypto Sports Betting & Casino Platform
June 14, 2024, 08:47:36 PM
#17
🍑

Tu método también es válido para mandar méritos a granel, aun que sea mas al estilo fuerza bruta pero aún así es funcional. Personalmente nunca se me han acumulado los objetivos de mérito, simplemente cuando leo un hilo que me gusta le mando méritos en ese momento y luego sigo leyendo otros posts.

Y sobre el turbo mouse, creo que vas a tener que contruirlo con lego, jajaja, se ve que es "Hand Made".
[/quote]

Pare ser honesto contigo. nose como exactamente llegamos a un punto en nuestro tablero local en el cuel el enviar méritos a una velocidad extrema se ha vuelto algo así como un pequeño deporte por aquí, suena hasta algo gracioso e ironico, si lo piensas... dentro de la comunidad completa del foro hay personas que se amargan un poco por no llegar a obtener uno de otro mérito, y aún así, llegamos a este punto.

Sobre la cuestión del mouse, no dudo que sea de fabricacion unica o casera. Pero dentro de los mercados, en especial del mercado de exportación asiático, se puede encontrar de todo un poco, incluso cosas tan aparentemente inútiles e impracticas como ese super mouse.  Tongue
legendary
Activity: 2338
Merit: 10802
There are lies, damned lies and statistics. MTwain
June 14, 2024, 12:03:39 PM
#16
<…>
Por ahí van los tiros: la serpiente también hace gala de postear (post) a su manera para lograr los objetivos. BeautifulSoup no se utiliza en el caso de los Méritos de manera directa, pero sus procesos primos, raspadores de perfiles y demás, sí (aunque desde el conocimiento pírrico). Claro que también hace uso de sus tirabuzones (bucles), cursores, ficheros de Méritos semanales, y poco más. Eso sí, la clave está en alimentar la panza de la RDBMS cumulativo como eje de alimentación selectiva para la serpiente.
legendary
Activity: 3220
Merit: 3009
June 14, 2024, 10:06:32 AM
#15
Sigue habiendo una pregunta: ¿cómo acceder al botón "Send"? Básicamente sería el último paso del "método online" que menciona @seoincorporation, pero no sé como hacerlo con "la serpiente".

Siempre está la opción de recurrir a inteligencia artificial para resolver las dudas de programación, yo acabo de perdirle que pase mi código a python y me arrojó lo siguiente:

Code:
import requests
from bs4 import BeautifulSoup

# Paso 1: Hacer una solicitud GET a la página web
url = "https://bitcointalk.org/index.php?action=merit;msg=64199301"
session = requests.Session()
response = session.get(url)

# Paso 2: Analizar el HTML para encontrar el formulario y el campo de entrada
soup = BeautifulSoup(response.text, 'html.parser')
form = soup.find('form')
input_merits = form.find('input', {'name': 'merits'})

# Paso 3: Modificar el valor del campo de entrada
input_merits['value'] = '1'

# Paso 4: Preparar los datos del formulario para enviar una solicitud POST
form_data = {input['name']: input.get('value', '') for input in form.find_all('input')}
post_url = form['action']

# Hacer una solicitud POST para enviar el formulario
post_response = session.post(post_url, data=form_data)

print(post_response.status_code)
print(post_response.text)

No he provado el código y dudo que sirva ya que no tiene la pausa entre las llamadas, pero nos muerstra básicamente como serían las llamadas a través de python con la librería BeautifulSoup.

Ustedes hablando de serpientes y de coding Básico, cuando lo máximo que puedo hacer para deshacerme de algo de smerits a una velocidad un poco alta es simplemente hacer el truco más viejo del libro: abrir varias ventanas en diagonal listas para pulsar el botón de envío cuando todo el setup este hecho dar click, cerrar, dar click, cerrar y a si consecutivamente.
Ciertamente, no les mentire: me siento como un hombre de la cavernas al lado de ustedes.
Apenas y recuerdo lo básico de como hacer un algoritmo sencillo en la serpiente, ya ni hablar de el uso de APIS e interaciones con páginas web.

Quizá algún día cuenta tenga tiempo me pague un curso de Serpiente... o me compro el mouse turbo que compartieron por aquí, lo que pase primero.

Tu método también es válido para mandar méritos a granel, aun que sea mas al estilo fuerza bruta pero aún así es funcional. Personalmente nunca se me han acumulado los objetivos de mérito, simplemente cuando leo un hilo que me gusta le mando méritos en ese momento y luego sigo leyendo otros posts.

Y sobre el turbo mouse, creo que vas a tener que contruirlo con lego, jajaja, se ve que es "Hand Made".
legendary
Activity: 1162
Merit: 2025
Leading Crypto Sports Betting & Casino Platform
June 13, 2024, 09:27:56 PM
#14
Ustedes hablando de serpientes y de coding Básico, cuando lo máximo que puedo hacer para deshacerme de algo de smerits a una velocidad un poco alta es simplemente hacer el truco más viejo del libro: abrir varias ventanas en diagonal listas para pulsar el botón de envío cuando todo el setup este hecho dar click, cerrar, dar click, cerrar y a si consecutivamente.
Ciertamente, no les mentire: me siento como un hombre de la cavernas al lado de ustedes.
Apenas y recuerdo lo básico de como hacer un algoritmo sencillo en la serpiente, ya ni hablar de el uso de APIS e interaciones con páginas web.

Quizá algún día cuenta tenga tiempo me pague un curso de Serpiente... o me compro el mouse turbo que compartieron por aquí, lo que pase primero.
legendary
Activity: 3906
Merit: 6249
Decentralization Maximalist
June 13, 2024, 06:56:57 PM
#13
una serpiente
A los que tenemos esas serpientes como mascotas, nos interesaría saber las órdenes que hay que darle (que tipo de comida, por ejemplo Wink ) para que reparta los méritos Smiley

Bueno, en realidad debería ser sencillo:

- Regularmente bajar https://bitcointalk.org/index.php?action=merit;u=XXXXX (XXXX siendo el número de usuario) y guardar todos los posts (en realidad solamente se necesita el número detrás de "msg" en el enlace) meritados en un archivo de texto (CSV, JSON o similar) o una base de datos, con las fechas de creación y de meritación, con lxml o algo por el estilo. Además bajar el número de sMerits disponibles.
- Regularmente borrar posts viejos del archivo de texto.
- A los posts meritados del archivo de texto aplicarles una fórmula para repartir los sMéritos.
- Luego activar un bucle que accede a https://bitcointalk.org/index.php?action=merit;msg=YYYYY, siendo YYYY el número del mensaje almacenado en el archivo de texto/base de datos.

Todo esto se puede hacer con la pitón, con un script con varias opciones, o con dos scripts (uno que administra el archivo de texto, y el otro que activamente merita los posts).

Sigue habiendo una pregunta: ¿cómo acceder al botón "Send"? Básicamente sería el último paso del "método online" que menciona @seoincorporation, pero no sé como hacerlo con "la serpiente".
legendary
Activity: 1834
Merit: 2919
LE ☮︎ Halving es la purga
June 13, 2024, 03:13:55 PM
#12
legendary
Activity: 3220
Merit: 3009
June 13, 2024, 11:08:28 AM
#11
<…> Pero por que tanto suspenso colegas <…>
Es por la gracia de especular y divagar sobre el método, con tendencia a la imaginación creativa. La explicación práctica es mucho menos interesante realmente, aunque sí puedo indicar que recurro al uso de una serpiente como auxilio para ello.

En lo relativo al código que indicas, la web del foro no suele tolerar peticiones que no estén separadas entre sí por 1 segundo (aprox.) o más. Quizás con algún comando tipo sleep entre medio de algunas de las llamadas se solvente su ejecución lineal.


Y si que han especulado con tendencia a la imaginación creativa, al grado de pensár que hay probabilidades de que no seas humano  Grin Creo que con los datos que me has dado ya me puedo hacer una idea clara de como lo haces, con la ayúda de un pitón y haciendo pausas entre cada llamada. Lo que comentas de 1 segundo tiene sentido, así evitan que un solo usuario sature las llamadas a la base de datos.

Así que tendrémos que vivir con la especulación sobre el proceso, está bién para dejar volar la imaginación un rato... me imagino así a la serpiente de la que hablas.

legendary
Activity: 2338
Merit: 10802
There are lies, damned lies and statistics. MTwain
June 13, 2024, 03:09:37 AM
#10
<…> Pero por que tanto suspenso colegas <…>
Es por la gracia de especular y divagar sobre el método, con tendencia a la imaginación creativa. La explicación práctica es mucho menos interesante realmente, aunque sí puedo indicar que recurro al uso de una serpiente como auxilio para ello.

En lo relativo al código que indicas, la web del foro no suele tolerar peticiones que no estén separadas entre sí por 1 segundo (aprox.) o más. Quizás con algún comando tipo sleep entre medio de algunas de las llamadas se solvente su ejecución lineal.
legendary
Activity: 1834
Merit: 2919
LE ☮︎ Halving es la purga
June 12, 2024, 03:45:01 PM
#9
Mi máximo de sM es 4users, y en la idea de la IA/v.0d.d.m.r intento de la manera más simple:



Cada clic tiene asociado la v5.3 wireless, tengo 4 log abiertas en: Tablet, Smartphone, desktop y laptop, luego el:

action=merit;msg=64204162/user:nick
action=merit;msg=24204162/user:nick
action=merit;msg=64203162/user:nick
action=merit;msg=14204162/user:nick
legendary
Activity: 1428
Merit: 1037
Argentine representative on gambling board
June 12, 2024, 03:20:22 PM
#8
No entiendo nada de nada solo voy a decir que elijo creer en que es un semidios, el lore es mas divertido de esta forma.

Creo que me faltó mas contexto, te invito a leer los siguientes hilos:

[FUN] Is DdmrDdmr even human?
https://bitcointalksearch.org/topic/fun-is-ddmrddmr-even-human-5117342

105 posts merited (by me) in just under 2 minutes – What’s got over me?
https://bitcointalksearch.org/topic/215-posts-merited-by-me-in-just-over-3-minutes-whats-got-over-me-v-440-5105622


Si, perdon capaz me exprese mal, en mi escueto comunciado  Grin

Me referia a que no tengo ni idea acerca de las dos técnicas que mencionaste como posibilidades para lograr el objetivo de repartir méritos.





legendary
Activity: 3220
Merit: 3009
June 12, 2024, 11:10:15 AM
#7
No sé... esto es un poco como pedirle a un mago que revele sus secretos... que por otro lado puede que no haya ninguno y que tan solo se trate de pura magia Wink

En lo relativo a las técnicas subyacentes, creo que más o menos lo he desvelado en algún post en el pasado, habiendo pasado por varios métodos hasta llegar al vigente. Lo dejaré así por ahora …

Pero por que tanto suspenso colegas, digo, no creo que un proceso de auomatización de ese estilo represente un riesgo para el foro. Incluso yo les puedo proporcionar los comandos para la automatizavión del proceso:

Desde la consola del navegador:

Nos dirigimos a la página para dar méritos:
Code:
this.document.location = "https://bitcointalk.org/index.php?action=merit;msg=64199301";

Cambiamos el valor de los méritos de cero a 1:
Code:
document.querySelector('form input[name="merits"]').value = 1;

Seleccionamos el form con el que deseamos interactuar (sino se va por el form de búsqueda):
Code:
let form = document.querySelector('form input[name="merits"]').closest('form');

Enviamos el mérito:
Code:
HTMLFormElement.prototype.submit.call(form);

Esto funciona si lo haces paso a paso, si pones todos los comandos de golpe no funciona, pero es un ejemplo de automatización a través de la consola del navegador.

Pero sigo intrigado de como lo hace el colega Ddmr, bien dicen, la curiosidad mató al gato.
legendary
Activity: 2338
Merit: 10802
There are lies, damned lies and statistics. MTwain
June 12, 2024, 03:13:28 AM
#6
El origen de todo fue el poder deshacerme de una bolsa de sMéritos acumulados que ya se hacía pesada, integrada tanto por los ganados como los procedentes del saco de Fuente de Méritos. De hecho, creo que he llegado a quedarme a cero (*) en alguna ocasión que otra, el cual era uno de mis objetivos, y ante la falta (a mi criterio) de una cantidad ingente de posts nuevos a meritar, opté por meritar post ya meritados, y en tiempos recientes, también posts meritados por otros y no meritados por mí (con sus condiciones).

En lo relativo a las técnicas subyacentes, creo que más o menos lo he desvelado en algún post en el pasado, habiendo pasado por varios métodos hasta llegar al vigente. Lo dejaré así por ahora …

(*) El objetivo de quedarse a cero sMéritos es mucho más complicado de lo que parece para las Fuentes de Méritos mayores, y por mucho que uno achique sMéritos, el influjo acaba de inundar las arcas nuevamente, al punto que llegar a quedarse a cero es ya un objetivo lejano.
legendary
Activity: 1820
Merit: 2162
The Alliance Of Bitcointalk Translators - ENG>SPA
June 12, 2024, 12:55:21 AM
#5
No sé... esto es un poco como pedirle a un mago que revele sus secretos... que por otro lado puede que no haya ninguno y que tan solo se trate de pura magia Wink

Me conecto desde el móvil y se me hace un poco complicada la tarea de navegar entre pestañas, pero echo de menos en este hilo una de esas imágenes del norte generadas por inteligencia artificial en las que se ilustra a un Ddmr androide mandando méritos Cheesy no sé si sabéis a cuáles me refiero.
Pages:
Jump to: