Estoy trabajando en portear a Hildabot al 8. Quizá más de un anon lo encuentre interesante, esto es lo que voy haciendo hasta ahora, permite postear desde la terminal de Python:
import requests
page = 'https://8chan.moe/replyThread.js?json=1'
data = {
"fileSha256" : "6cfb40e2c8e79f6a43d8e6584f32bd4a7fc64dcb1409f51ce8b8e47ff1f1b0fb",
"fileMime" : "image/jpeg",
"fileSpoiler" : "",
"fileName": "kaisa.jpg",
"boardUri": "ac",
"threadId": "1",
"message": "lmensaje de prueba"
}
cookies = {
"captchaid":"62facef3530a5d603a4862dbnT1hdYDOeP/QLpSBOSP82UdmOUX7qqfi3sYHjkcv2ScASqm6apFxZXufkLq9258NeOvXJfAcb6YY9Y7dSSKIiQ==",
"bypass":"62f898b12b70557f0d9cc0bf5Hh4ReQaTtIlZhth48320FSeowM5hiGwa3XziNB+WkyLKra9AMJA4K8zik9EPIjp9pcMQhiybP4mZ2DaCUt4qpYLf+nHVLvB/ykuaD3u4yGj7g1Tw9OVJfI8cBb7vd2qdHiA1uV8y2vbd12J461q6UTbUjS9ftUAoXkDP0Jhxy92TPHfMXPnFvmMmkvy2WOfeZGGoyb1IpqIDXjN2dqrfvM2Lz9ddDDHl37EKQoZ0gYBGoLrLIxSIBHiqa6nlL202Le9eHlP5WaFV2wrEqeZGQNEgEMaNcfhb75v+wfJhRU5irRyW+bJS9lQCOUMM7XuMmNT4+PJzHZGfIrNBSGogg==",
"captchaexpiration":"Mon, 15 Aug 2022 22:58:47 GMT"
}
r = requests.post(page,data=data,cookies=cookies)
print(r.text)
Hildabot en Hispachan estaba hecha en Selenium Webdriver, aprovechando que Lynxchan está muchísimo más y mejor documentado decidí hacerlo en Requests y BS4 que es infinitamente más óptimo y sencillo que Selenium. Acá está la docu de Lynxchan por si alguien le interesa:
https://gitgud.io/LynxChan/LynxChan/-/blob/master/doc/Form.txt
Pero les resumo como funcionan las formas. La forma para postear un mensaje cuenta con los campos: fileName, boardUri, threadId y message; que son autoexplicativos; también hay otros para especificar la bandera, el nombre del usuario, pero para un posts normal si nada extravagante no son necesarios. Luego si quieres que el post tenga una imagen adjunta es un poco más complicado, pero definitivamente factible. Tienes que especificar los siguientes campos:
>fileSha256
>fileMime
>fileSpoiler
>fileName
El primero es una codificación criptográfica, convierte el filename del archivo a una secuencia de caracteres encodeados, hay librerías de Python que permiten hacer esa conversión. El segundo corresponde con el tipo de archivo que se usa, si es un jpg va "image/jpeg", si es un png va "image/png". El tercero si lleva vacío, entonces no pondrá la imagen en spoiler; caso contrario lo hará. El último es el nombre del archivo.
La cuestión es esta: 8chan usa el Sha256 como referencia para subir la imagen, no el nombre de archivo. En otras palabras, si envías:
data = {
"fileSha256" : "aaa",
"fileMime" : "image/jpeg",
"fileSpoiler" : "",
"fileName": "kaisa.jpg",
}
No se subirá la imagen, por mas que tengas "kaisa.jpg" dentro del folder en el que estás ejecutando el programa. El fileSha tiene que ser el del archivo que intentas subir, "fileName" es solo secundario. Para ello puedes hacer una conversión, en google encontré este código que me parece bastante útil:
import hashlib
filename = input("Enter the input file name: ")
with open(filename,"rb") as f:
bytes = f.read()
readable_hash = hashlib.sha256(bytes).hexdigest();
print(readable_hash)
Que en el caso de "kaisa.jpg" su hash sería "6cfb40e2c8e79f6a43d8e6584f32bd4a7fc64dcb1409f51ce8b8e47ff1f1b0fb" y que una vez introducido en el campo funciona sube la imagen con total normalidad, como pueden ver aquí
>>6341
Finalmente "cookies" corresponde con las galletas que usa 8chan. El 8 almacena tres galletas para postear con normalidad y no encontrarse con el captcha: Bypass, captchaid y captchaexpiration; los tres los puedes conseguir con una extensión de navegador para exportar galletas de preferencia. Según
>>>/site/6515 hay planes para implementar una API para hacer bots que eludan el captcha completamente, pero por lo pronto, esta es la manera más sencilla de lidiar con el captcha del 8.
>>6098
>Also[Expand Post]
Se me olvidaba. Tienes que aprender los elementos básicos de programación estructurada:
>Operadores aritméticos (suma, resta, producto, división)
>Operadores lógicos (Y, Ó, NO)
>Flujo de control (Si, Si-Sino, Desde, mientras, hacer-mientras y En-caso)
Este último es el más complicado, pero una vez que lo entiendes, lo mismo aplica a todos los lenguajes de programación, solo que con diferente semática. Yo lo aprendí con pseudocódigo en hoja y papel, pero tú puedes hacerlo en PSeINT o en C++; dependiendo de con qué estés más cómodo.
Si tienes alguna duda, siéntete libre de preguntar EEH. Soy tu anon.