Noțiuni de bază cu cereri http Python în loc de INT (Programare, Python, Cereri Python)

user3281831 a intrebat.

Im încearcă să creeze un cod python simplu care ar comunica cu serviciul de rezolvare a captcha 9kw.eu prin intermediul api lor https://www.9kw.eu/api.html#apisubmit-tab. Practic, trimit o imagine codificată base64 cu câteva chei:valori și răspunsul de la server ar trebui să fie un număr de genul: 58952554, dar eu primesc doar

<response[200]>

Ceea ce ar trebui să însemne că serverul a primit datele mele, dar eu nu primesc nimic altceva.Sunt capabil să obțin rezultatul corect cu un simplu formular html:

    <form method="post" action="https://www.9kw.eu/index.cgi" enctype="multipart/form-data"> 
KEY:<br>
<input  name="apikey" value="APIKEY"><br>
ACTION<br>
<input  name="action" value="usercaptchaupload"><br>
FILE:<br>
<input name="file-upload-01" value="BASE64IMAGEDATAHERE"><br>
TOOL<br>
<input  name="source" value="htmlskript"><br>
ROTATE<br>
<input  name="rotate" value="1"><br>
Angle<br>
<input  name="angle" value="40"><br>
BASE64
<input  name="base64" value="1"><br>
Upload:<br>
<input type="submit" value="Upload and get ID">
</form>

Acesta este codul python, care ar trebui să facă același lucru:

import requests
import time
#base64 image encoding
with open("funcaptcha1.png", "rb") as f:
    data = f.read()
    filekodovany = data.encode("base64")
    #captcha uploader
udajepost = {'apikey':'APIKEY','action':'usercaptchaupload','file-upload-01':filekodovany,'source':'pythonator','rotate':'1','angle':'40','base64':'1'}
headers = {'Content-Type':'multipart/form-data'}
r = requests.post('https://www.9kw.eu/index.cgi', data = udajepost)
print(r)

Mulțumesc pentru orice ajutor.

Comentarii

  • Acest lucru este documentat pe primul fragment, pe pagina principală, din requests pachet. În altă ordine de idei, în viitoarele întrebări, vă rugăm să încercați să subliniați mai clar ceea ce încercați să obțineți; un Request are multe proprietăți, toate acestea putând fi utile în diverse contexte. –  > Por Jules.
3 răspunsuri
Ahsanul Haque
r = requests.post('https://www.9kw.eu/index.cgi', data = udajepost)

Aici, r este întregul obiect de răspuns care are multe atribute. Cred că aveți nevoie doar de r.text. Deci, puteți folosi doar :

print(r.text) 

girorme

Căutați răspunsul la cerere:

print(r.text)

În acest fel, veți avea răspunsul în text simplu.

Anurag Trivedi

obțineți ieșirea json de către:

r.json()

și response_code by:

r.status_code