/t/ - Tecnologia

Nome
Email
Messaggio
File
Password (Per rimozione del file)
Limiti: Caratteri: 7200
Numero massimo file: 10
Upload massimo supportato: 20MB
Lunghezza massima video: 5 minuti

Vai in fondo ] [ Torna ] [ Catalogo ]   [Archivio temporaneo] — 


File: 1733081319974.png (181.25 KB, 622x414, ClipboardImage.png)

 No.1533

Come posso fare reverse engineering di chiamate POST?

>inb4 i dev tools di firefox

Si ma non sono elaborati, i dati sono raw e non so interpretarli

Consigli? Prederei d'esempio anche VC con https://github.com/anond0rf/vecchioposter il progettino di quell'anon che ti faceva postare da CLI, ma il codice è poco commentato e non è molto leggibile

 No.1534

inietta js oppure usa un proxy. cmq non si capisce cosa cazzo vuoi fare

 No.1535

I Dev tools vanno bene

 No.1536

>>1534
Vorrei provare a postare su /t/ tramite una richiesta fatta con python

 No.1537

>>1536
usa il client del collega anon attraverso delle

import subprocess subprocess.run(["ilclientdellamicoanon", "primo parametro","secondo","etc"])

 No.1538

>>1537
Diciamo che vorrei capire meglio quali campi mi serve poter inserire nella request tipo il campo nome, password e ecc. ecc. ma soprattutto come è costruita, cioè se un JSON o un del plain text. Comunque posto e vi mando lo scan della richiesta POST

 No.1539

File: 1733264322598-0.png (102.88 KB, 1529x876, ClipboardImage.png)

File: 1733264322598-1.png (87.04 KB, 1504x845, ClipboardImage.png)

Cioè, gli header della request li capisco tranne che il Content-Type che boh, che cazzo è? Idem per il corpo che in realtà è decifrabilissimo ma non ne capisco il formato

ma anche i campi, che immagino servano per impedire di creare bottini, con le emoji in unicode non scherzano…

 No.1540

File: 1733412048796-0.png (72.71 KB, 569x762, ClipboardImage.png)

File: 1733412048796-1.png (32.76 KB, 898x506, ClipboardImage.png)

Allora, ho perso un pochino di tempo per capire il content type ma mi son reso conto che è inutile se prima non conosco cosa invio. in ogni caso, ho realizzato questo script qui che mi consente di ottenere ogni campo input/text-area facente parte del form per postare e qui incominciano i cazzi, per un semplicissimo motivo.

Se si osserva la seconda pic in >>1539 dove c'è il corpo della richiesta, si possono visualizzare delle emoji mentre da console, questi caratteri vengono visualizzati con un'altra codifica e non saprei come gestirla.

Tolto questo, la richiesta contiene questo parametro boundary che non so con quale criterio viene generato…

Allego in seconda pic i risultati dello script

 No.1541

File: 1733420803283.png (79.41 KB, 717x899, ClipboardImage.png)

Ninente da fare anonimi, in python riesco a generare solo questa richiesta qui. I campi vuoti non li considero proprio e non li metto nel corpo della request, aggiungo manualmente il campo 'json_response' e lo setto ad uno…

Le differenze che noto riguardano solo il numero dei trattini che precedono il boundary e l'ordine dei campi nella request e tra queste due differenze credo che incida di più il numero dei trattini che l'ordine… Poi boh

 No.1542

Niente, vado ad ammazzarmi…

Date uno sguardo pure voi al codice, ho provato tutto tranne che impostare correttamente l'ordine dei campi. La risposta torna con 200 ma qui non posta manco per il cazzo

https://pastebin.com/3SmFiUM0

 No.1543

>>1542
ho appena provato, è più complicato di così, devi bipassare cloudflare altrimenti dice post scartato

 No.1544

>>1543
LMAO, immagina fare un bot che deve provare di non essere un bot

 No.1545

>>1543
>devi bipassare cloudflare altrimenti dice post scartato

Può darsi, ma come hai fatto a capirlo?

 No.1546

>>1545
Dal fatto che ci sono tante richieste a cloudflare e risponde con " la tua risposta sembra automatica post scartato"

 No.1547

>>1545
Comunque ho guardato su stackoverflow e non devo generare numeri casuali
I boundary o che cazzo sono li genera automaticamente requests

 No.1548

>>1547
import requests
from bs4 import BeautifulSoup
import time

# url del filo
url = "https://vecchiochan.com/t/res/1533.html"
# headers della richiesta

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0',
'Accept': '*/*',
'Accept-Language': 'it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3'
}

s = requests.Session()

# ottengo la risposta dal server
h_response = s.get(url, headers=headers)
# ne prelevo il file HTML
data = h_response.text
# analizzo l'HTML
soup = BeautifulSoup(data, 'html.parser')
# ottengo tutti il form che mi consente di postare
form = soup.find("form", attrs={"name": "post"})
# trovo tutti gli input interni al form compresi quelli nascosti
inputs = form.find_all("input")
files = {

}
# per ogni elemento input
for e in inputs:
# inizializzo il valore vuoto
value = ""
# se l'elelemnto ha l'attributo value
if e.has_attr("value"):
files[e["name"]] = (None, e["value"])
# trovo anche tutte le textarea interne al form
ta = form.find_all("textarea")
# per ogni textarea trovata
for tas in ta:
# salvo il nome della textarea e il suo contenuto
if tas["name"] == "body":
# qui inserisco il corpo del post
files[tas["name"]] = (None, "Ciao da Python! Odio i negri, viva il papa!")
else:
files[tas["name"]] = (None, tas["value"])
# aggiungo chiave mancante
files["json_response"]=(None, "1")
print(files)
#inoltro la richiesta
request = requests.Request('POST', "https://vecchiochan.com/post.php", files=files, headers=headers).prepare()
print(request.body.decode('utf8'))
time.sleep(5)
response = s.send(request)
print(response.headers)
print(response.status_code)
print(response.text)

 No.1549

File: 1733488606374-0.png (32.31 KB, 1865x118, ClipboardImage.png)

File: 1733488606374-1.png (89.03 KB, 752x907, ClipboardImage.png)

>>1546
>>1547
>>1548
PORCA PUTTANA PERCHè IL TUO SCRIPT FUNZIONA E IL MIO NO? Cioè manco posta però mi da pic relata nella risposta

Fai conto che avevo strippato il codice di pastebin fino a ridurlo come seconda pic relata…

Il redirect noto che lo fai sul /post.php…

 No.1550

Ciao da Python

 No.1551

File: 1733488675883.png (142.16 KB, 1719x914, ClipboardImage.png)

>>1550
FUNZIONA!!!!!!!!!!!! CI SONO RIUSCITO!!!!!!!!!! HO CAMBIATO SEMPLICEMENTE L'URLO SU POST.PHP!!!!!

 No.1552

>>1551

Eccovi lo script funzionante
https://pastebin.com/eEEqv3A1

 No.1553

>>1552
L'errore è stato inoltrare la richiesta allo stesso url da dove prendevo le chiavi, cioè questo filo.

MA COME IL DANNATO MONGOLOIDE CHE SONO, MI SON DIMENTICATO CHE L'ACTION DEL FORM VA GIUSTAMENTE SU '/post.php',
per cui io inoltravo la richiesta nel posto sbagliato… PORCO DIO CHE FROCIO MONGOLOIDE CHE SONO

COMUNQUE UN GRANDISSIME GRAZIE A TUTTI GLI ANON CHE MI HANNO AIUTATO! GRAZIE MILLE DI CUORE <3

 No.1554

>>1552
Bravo yurumi
Possibile che cloudflare si triggeri perché non ho messo utf8 encoder su ogni singolo campo? O magari il dictionary è formattato sbagliato
Strano

 No.1555

File: 1733491456129.png (92.66 KB, 1600x720, ClipboardImage.png)

>>1554
Yurumi è il mio vecchio nik femminile, lo usavo su Rust [il gioco] per farmi dare le risorse ;)

 No.1556

>>1554
Btw, si, il dict è parecchio sballato, ti direi pure l'errore che hai fatto, ma credimi, otterrai un immensa soddisfazione controllando il corpo della richiesta che hai inoltrato e paragonandola ad una richiesta da dev tools

controlla se hai filename ;)

 No.1557

anond0rf qui.

Al momento sto lavorando, più tardi leggo per bene e ti dò una mano se riesco

 No.1558

>>1557
Già risolto, libero di dare uno sguardo se vuoi

 No.1559

btw anond0rf, ti seguo su GH

 No.1560

Se avessi seguito il mio consiglio ed avessi usato subprocess conb client di d0rf ora funzionerebbe. reinventare la ruota è raramente una scelta proficua, tienilo a memoria sul lavoro

 No.1561

>>1560
Hai ragionissima anon, ma vedi, come ho detto alcuni fili fa qui su /t/ sto facendo più hobbystica che altro. Nel lavoro è sacrosanto non sprecare tempo e sanità mentale nel ricreare cose che online già esistono e soprattutto funzionano meglio.

Onestamente ho voluto rifare tutto da zero e non ti nego che così facendo ho appreso molte cose come la richiesta POST con contenuto multipart/form-data; e soprattutto ho dimostrato a me stesso che non sono da meno rispetto al resto del mondo



[Post a Reply]
Elimina post [ ]

[Nuova risposta]
Vai in cima ] [ Torna ] [ Catalogo ]