Permalänk
Medlem

Avkodning python 3

Hej,

Någon vänlig själ som kan förklara för mig hur jag kan avkoda svaret i python 3? Försöker migrera mitt program från py2 till py3.

from __future__ import unicode_literals response = requests.Session().get('https://internetowa.tv/captcha/', cookies=html.cookies, headers=headers, verify=False) debug('response: {}'.format(response.content))

Svaret på response.content blir något galet..

Debug @ response: b'GIF87a\xaa\x00\x1e\x00\xa2\x00\x00\xff\xff\xff\xff\xff\xff\x00]\xf9\xcd\xcd\xcd\xec\xec\xec\x00\x00\x00\x00\x00\x00\x00\x00\x00,\x00\x00\x00\x00\xaa\x00\x1e\x00\x00\x03\xfeH\xba\xdc\xfe0\xcaI\xab\xbd8k0\x80\xef\x1e\'\x8e_(\x82\x1dh\xae\xeb\x90~.+\xb3nL\xca6\xaa\x86{[\xa6=\x9c\x90\x93C\xdd\x00\n"\xcfd+\xfd\x94\'#Q\xd5\x1c\xea\x80\xc7\x99\x93\x14<V\xb3\xcb\x9a\xb4\xbb#\x9fdI\xda\xecU\xf3\xfd\xb0c\xad|=2\x7f\xd5`)\xb3^\xd6\x9d\xff\\T=\nMzlKn8=1~\x88\x80<T`a[\x94[]j}Pt\x87\x96{\x1e\x84\x85u0m\x9e\x8e^Nz\x92y\xa5\x91\\\x9bx\x90@\x86\xad0>\x99e+ik\x8c\xa2\x9dwC\xa8\xb5g\x97\x93m\xbc\xc0\x949\xc1n_\x8d\xc2\xb5A\x9c \xba\xd1/-\xa9L\xc6\xacq\xcf|\xc47F\x8c\x91\xd6\xcc\x96fS\xd5\xe4\xb1\xbb\x1dI\xd6Uc]\x02\x02&\xf3\xa3\xd8\xa6\xf3\xfa\xf6\x95\xd9\xd0\xb0\x98z\xa9R\xa4%\x9a)t\xeatU\x1a\xb0O\x1f8\x00\xf3l\xd8#\xc5\x83_\xb3\x89\xc9D4\xa47\xfe#b\x08~\xd9\xbeA\twH\xdd\xa2=\xe4\xdeA\xa1\xf6\xc4CD\x10\x18\x95\x80d\xc8\x11\x90Ch0\xe95j\x821f=\x01*0\xca*\xe5\xaa[\xc1u\xf7pAj\xa9PI\xd0\x9a\x10\xa1\x12\xf1\xe8R\xea\xc7\x9b\xa5\xecaE$\x14\xe4O\x14>\x7fe\x14\x05g`Q\xb3K\xdc9Ja1\xaa\x0c\xad@\xa9\xd2\xb0\xa8\xe7\xa6\xd0\x13=uny\xc9a\xe6\xd1kW\x8c\x1e\xe5\xa5\x0e\x11\x96O\x04\xf0Umx\xac\x03\\\xb7\x8b\x1c\xeb%\x96\xd3\xdfFa1\xe4R5\x89\xcc\xb0\xb6\xc2\xcf\x94.\xabB\xa8\xe5Wd\x8f\xbd\x8aR\x1d\x90\xe6\x11\x90w\xaf\xfe\\\x88\xb6\x1c\xb6\xdb\x9e\xc5M1Q\xba\x1f\xe4(R6\x86\x9d\x8dR\xb2\x18\xbfUG\xc4\xcc<y"\xe8I\x9e\xe2\x88\xb6\x92H`\x08\x85\xe3\xa2\x86ki\x97\xf5iM9]\xf8\x94\xad\x91\xe3\x8e\x99\xde\xe9$\nUl\xf7\xd2\xd0s\x10\x93]\xa1\x9ab\xf2\x0f\xc8\xf1\xea$\xfc3\xbd\xfe\xf6\xaa\xa0M\xb4\xdcHkiC\x03\'\xebp\xa6\x08<\xd7%\x06\x18y\xef\xe1R\x88:\x97]\xf2N\x11Q\xed3\x87\x86\xfe(\xa6\x942\xd5\xd12\xc7IL\xa8U\xd8\x1d\xa2\x89t\x10fk\x8d%\xa2J\x07.\x83\xd0A z!!x\xea\xb5\x90\x06e\xbe\x9c"\xe30\xfcEh\xa3&\xac\xb8\xf8\xd05\xab|#Hvb\xc4\x07IS\x7f\xd8gP\x94#V\x83\x8e-\x0fv\xe8d\x8c[\xfa\xb3\xe5/\'I9\x00KEYh\xca-\xb5\xb1\x07\\\x97\xc1P$b\x8e\xef\xed\xe2\xdez\xc0\x94A&\x8do\x18f\x1d\x9e7F\x91`\x88\\\xb2Y\x1d3"\xd1r\xa3Hj\x8d\xb8\x94}G\xb6\x16\xa8+\x87U\xd9$J\x05\x0eYe\x8b\xd0\xe1AY;\x04\x10\xf5\x97oD\x86j\xda9\x9d<"\xe76X"u\xd6|\x83\xee\xf9\x1c\x12\x0e\xae\x98Ec0z)Fv,N\xa7\xdb(\x8f\x16J\x10\x81o\xa8\x18\x88!nP\xf3&|\x91\n9!\xd6\x99\xd1Q\x9a\xd2\x9c\xed\xc9\xb1\xec#aJ+\x08\x91\x18r\x8aY\x8d\xa9\xb4r\x0c\x9c\x95\xae\xaa(\xa4H^x`\x9f\x8bn\xd7\xd9?\xa0q\xaa\xc1\xbb\xf0\xc6+\xef\xbc\xf4\xca\x9b\x00\x00;'

Visa signatur

AMD 7800X3D | ASUS TUF X670E-PLUS | Corsair Vengeance DDR5 32GB EXPO | ASUS TUF 4090 OC 24GB |
Noctua NH-U12A | Corsair 4000D | Corsair AX1200W | Steelseries Apex 7 | Steelseries Sensei Ten | ASUS VG35VQ

https://github.com/Mariusz89B

Permalänk
Medlem
Skrivet av M89:

Hej,

Någon vänlig själ som kan förklara för mig hur jag kan avkoda svaret i python 3? Försöker migrera mitt program från py2 till py3.

from __future__ import unicode_literals response = requests.Session().get('https://internetowa.tv/captcha/', cookies=html.cookies, headers=headers, verify=False) debug('response: {}'.format(response.content))

Svaret på response.content blir något galet..

Debug @ response: b'GIF87a\xaa\x00\x1e\x00\xa2\x00\x00\xff\xff\xff\xff\xff\xff\x00]\xf9\xcd\xcd\xcd\xec\xec\xec\x00\x00\x00\x00\x00\x00\x00\x00\x00,\x00\x00\x00\x00\xaa\x00\x1e\x00\x00\x03\xfeH\xba\xdc\xfe0\xcaI\xab\xbd8k0\x80\xef\x1e\'\x8e_(\x82\x1dh\xae\xeb\x90~.+\xb3nL\xca6\xaa\x86{[\xa6=\x9c\x90\x93C\xdd\x00\n"\xcfd+\xfd\x94\'#Q\xd5\x1c\xea\x80\xc7\x99\x93\x14<V\xb3\xcb\x9a\xb4\xbb#\x9fdI\xda\xecU\xf3\xfd\xb0c\xad|=2\x7f\xd5`)\xb3^\xd6\x9d\xff\\T=\nMzlKn8=1~\x88\x80<T`a[\x94[]j}Pt\x87\x96{\x1e\x84\x85u0m\x9e\x8e^Nz\x92y\xa5\x91\\\x9bx\x90@\x86\xad0>\x99e+ik\x8c\xa2\x9dwC\xa8\xb5g\x97\x93m\xbc\xc0\x949\xc1n_\x8d\xc2\xb5A\x9c \xba\xd1/-\xa9L\xc6\xacq\xcf|\xc47F\x8c\x91\xd6\xcc\x96fS\xd5\xe4\xb1\xbb\x1dI\xd6Uc]\x02\x02&\xf3\xa3\xd8\xa6\xf3\xfa\xf6\x95\xd9\xd0\xb0\x98z\xa9R\xa4%\x9a)t\xeatU\x1a\xb0O\x1f8\x00\xf3l\xd8#\xc5\x83_\xb3\x89\xc9D4\xa47\xfe#b\x08~\xd9\xbeA\twH\xdd\xa2=\xe4\xdeA\xa1\xf6\xc4CD\x10\x18\x95\x80d\xc8\x11\x90Ch0\xe95j\x821f=\x01*0\xca*\xe5\xaa[\xc1u\xf7pAj\xa9PI\xd0\x9a\x10\xa1\x12\xf1\xe8R\xea\xc7\x9b\xa5\xecaE$\x14\xe4O\x14>\x7fe\x14\x05g`Q\xb3K\xdc9Ja1\xaa\x0c\xad@\xa9\xd2\xb0\xa8\xe7\xa6\xd0\x13=uny\xc9a\xe6\xd1kW\x8c\x1e\xe5\xa5\x0e\x11\x96O\x04\xf0Umx\xac\x03\\\xb7\x8b\x1c\xeb%\x96\xd3\xdfFa1\xe4R5\x89\xcc\xb0\xb6\xc2\xcf\x94.\xabB\xa8\xe5Wd\x8f\xbd\x8aR\x1d\x90\xe6\x11\x90w\xaf\xfe\\\x88\xb6\x1c\xb6\xdb\x9e\xc5M1Q\xba\x1f\xe4(R6\x86\x9d\x8dR\xb2\x18\xbfUG\xc4\xcc<y"\xe8I\x9e\xe2\x88\xb6\x92H`\x08\x85\xe3\xa2\x86ki\x97\xf5iM9]\xf8\x94\xad\x91\xe3\x8e\x99\xde\xe9$\nUl\xf7\xd2\xd0s\x10\x93]\xa1\x9ab\xf2\x0f\xc8\xf1\xea$\xfc3\xbd\xfe\xf6\xaa\xa0M\xb4\xdcHkiC\x03\'\xebp\xa6\x08<\xd7%\x06\x18y\xef\xe1R\x88:\x97]\xf2N\x11Q\xed3\x87\x86\xfe(\xa6\x942\xd5\xd12\xc7IL\xa8U\xd8\x1d\xa2\x89t\x10fk\x8d%\xa2J\x07.\x83\xd0A z!!x\xea\xb5\x90\x06e\xbe\x9c"\xe30\xfcEh\xa3&\xac\xb8\xf8\xd05\xab|#Hvb\xc4\x07IS\x7f\xd8gP\x94#V\x83\x8e-\x0fv\xe8d\x8c[\xfa\xb3\xe5/\'I9\x00KEYh\xca-\xb5\xb1\x07\\\x97\xc1P$b\x8e\xef\xed\xe2\xdez\xc0\x94A&\x8do\x18f\x1d\x9e7F\x91`\x88\\\xb2Y\x1d3"\xd1r\xa3Hj\x8d\xb8\x94}G\xb6\x16\xa8+\x87U\xd9$J\x05\x0eYe\x8b\xd0\xe1AY;\x04\x10\xf5\x97oD\x86j\xda9\x9d<"\xe76X"u\xd6|\x83\xee\xf9\x1c\x12\x0e\xae\x98Ec0z)Fv,N\xa7\xdb(\x8f\x16J\x10\x81o\xa8\x18\x88!nP\xf3&|\x91\n9!\xd6\x99\xd1Q\x9a\xd2\x9c\xed\xc9\xb1\xec#aJ+\x08\x91\x18r\x8aY\x8d\xa9\xb4r\x0c\x9c\x95\xae\xaa(\xa4H^x`\x9f\x8bn\xd7\xd9?\xa0q\xaa\xc1\xbb\xf0\xc6+\xef\xbc\xf4\xca\x9b\x00\x00;'

Ser ut att vara en bild i formatet GIF? Är det ett annat svar än vad som väntas?

Visa signatur

Desktop: Ryzen 5800X3D || MSI X570S Edge Max Wifi || Sapphire Pulse RX 7900 XTX || Gskill Trident Z 3600 64GB || Kingston KC3000 2TB || Samsung 970 EVO Plus 2TB || Samsung 960 Pro 1TB || Fractal Torrent || Asus PG42UQ 4K OLED
Proxmox server: Ryzen 5900X || Asrock Rack X570D4I-2T || Kingston 64GB ECC || WD Red SN700 1TB || Blandning av WD Red / Seagate Ironwolf för lagring || Fractal Node 304

Permalänk
Medlem

Det stämmer, det ska vara en .gif bild. Jag får dock ett annat svar när jag öppnar det i python 2.

Debug @ response: 'GIF87aª ¢ ÿÿÿÿÿÿ ]ùÍÍÍììì , ª þHºÜþ0ÊI«½8k08øØ}ã0†¤®çê¦o×rsìšï Ãr®¢¸ß¬ôÛÄ]ÐScÑtC©™töŠ<gèÄõÙRÔ\ÕR ¦4ÓµXR3¿².j¿Éª`sÚ–Úp-}C{fwxOgq]WQDkF"KZJ>Qd—Bi•vfqw=Ž~rpg|‘€am\¥v©^’’šL…u‡“hª‘¿†,£X[7T‚±~‰‡5jAHÂ_`ÖÖ°.Ö³YÒ)Ûà¯`yO××°}¤´[{U{+H΋OÕá÷€+ç{çØiûî ‡ÆŸ@=þq ḧ­bb–ñòmЩË± ·þÍA†óñQÀ8 ŸÙ‚琘0wݘ˜ˆFÍåB“Ï 0LI#eÇrçü(D™1ÄÏNõ–Í›¨ÈÀéécgÆÿ:ðÔVt†Uf/þSÎͪˆ›\|Ò“íÅÏk9°É j¯GÊ$G{ ZÇžLbK̪ãEOÀ'¹Èa!Y4ïMƒú6¾Úå磯†ZðmÊŽ¥šÒ”} Y8³Ï¢=Mb¬ÒQ+j=â⪖Œv5" ¸“Jy„µG‰'õ›=Ò/F ëòrlt6QÙ"˜C¼-–ÔÃ,‘‰:F kPűª)iJ|ÁŒ¯„ Ì¡˜À.ÉÒÙ~K”|S‰ 4ø}þØf¾­Á+!â^/Á—`ŒÄÄoܼQ+1±ˆ} öS1Ü hM-‡ÂÁ„b]Ço‚„ØK…&FpIÔxßtZr a»´7Q„˜„a"u^äâŽ9þ¥…+Y 'ëx(ãÊÔÊNGšb –#Š¸ò™(Êgfm/9Ø<aNG'fR˜Ÿ¡ß‘"Úy[vrè3 7Â탂ÀX¹à{#rÉß‚‹v!|`™“˜PÇIdHqUu€Ù4§º,ªŽºEzDýeÚ$„eÀév<~©‘¬™è‰& ‚âŠT›§Äƒ3kE™âYPâ—›¢Å&/‘—¡î¨…;df+¡¦)(¦lNØ9îb€¢fi®0z Á¹è¦«îºì²› ;'

Visa signatur

AMD 7800X3D | ASUS TUF X670E-PLUS | Corsair Vengeance DDR5 32GB EXPO | ASUS TUF 4090 OC 24GB |
Noctua NH-U12A | Corsair 4000D | Corsair AX1200W | Steelseries Apex 7 | Steelseries Sensei Ten | ASUS VG35VQ

https://github.com/Mariusz89B

Permalänk
Medlem

@M89: Python 2 hanterade strängar lite galet, där tolkades allt som ascii, även binär data som du har där. Det fanns ingen skillnad mellan strängar och bytes. Det du ser som vettig output från Python 2 är egentligen helt galet.

I Python 3 har de åtgärdat det, och det är nu skillnad mellan strängar och bytes (i princip byte-arrayer). Det du har där är en fullgod bild i råa bytes, jag kan inte tänka mig något scenario där det skulle vara vettigt att avkoda den. Jag skulle tippa på att allt som inte har något motsvarande textvärde i ASCII skrivs ut som rå byte när man printar bytes. Exempelvis är \xaa den hexadecimala siffran aa, vilket decimalt blir 170, och \x00 är noll (en null-byte).

Avkodning gör du om du har bytes som du vill konvertera till läsbar text (exempelvis UTF-8), men det förutsätter att det du försöker avkoda faktiskt har det formatet. Vilket en GIF-bild givetvis inte har.

Jag vet inte riktigt vad du ska ha bilden till, men du kan exempelvis skriva den där bilden direkt till en fil som heter img.gif såhär.

import pathlib import requests response = requests.Session().get('https://internetowa.tv/captcha/', cookies=html.cookies, headers=headers, verify=False) pathlib.Path("img.gif").write_bytes(response.content)

Alternativt om pathlib ser främmande ut fungerar det att öppna en fil i byte-mode såhär.

import requests response = requests.Session().get('https://internetowa.tv/captcha/', cookies=html.cookies, headers=headers, verify=False) with open("img.gif", mode="wb") as file: file.write(response.content)

I båda fallen bör du få ut en bild som heter img.gif.

Permalänk
Medlem
Skrivet av SimpLar:

Tack för att du ledde mig in på rätt spår!. Som sagt var det strul med strängar och bytes.

Resultat

with open(image, "wb") as f: respBytes = bytes(response.content) * 1028 f.write(respBytes)

Visa signatur

AMD 7800X3D | ASUS TUF X670E-PLUS | Corsair Vengeance DDR5 32GB EXPO | ASUS TUF 4090 OC 24GB |
Noctua NH-U12A | Corsair 4000D | Corsair AX1200W | Steelseries Apex 7 | Steelseries Sensei Ten | ASUS VG35VQ

https://github.com/Mariusz89B