Vill du vara del av diskussionerna i forumet, ställa frågor eller hjälpa andra? Registrera dig här!
Trädvy Permalänk
Medlem
Plats
Malmö
Registrerad
Jun 2005

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;'

Intel Core i7-8700K | ASUS STRIX Z370-F | Corsair Vengeance LED 16GB | ASUS STRIX 1080 Ti OC |
Noctua NH-U12A | Corsair Q400 | Corsair AX1200W | Corsair Strafe RGB | Corsair M65 RGB ELITE

Trädvy Permalänk
Medlem
Registrerad
Apr 2002
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?

AMD Ryzen7 3800X || Gigabyte X570 Ultra || Evga GTX 1080Ti || Crucial Ballistix Sport 3200 64GB || Samsung 950 Pro 512GB || Samsung 960 Pro 1024GB || XB270HU 1440p IPS G-Sync

Trädvy Permalänk
Medlem
Plats
Malmö
Registrerad
Jun 2005

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 Á¹è¦«îºì²› ;'

Intel Core i7-8700K | ASUS STRIX Z370-F | Corsair Vengeance LED 16GB | ASUS STRIX 1080 Ti OC |
Noctua NH-U12A | Corsair Q400 | Corsair AX1200W | Corsair Strafe RGB | Corsair M65 RGB ELITE

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Okt 2011

@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.

Trädvy Permalänk
Medlem
Plats
Malmö
Registrerad
Jun 2005
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)

Intel Core i7-8700K | ASUS STRIX Z370-F | Corsair Vengeance LED 16GB | ASUS STRIX 1080 Ti OC |
Noctua NH-U12A | Corsair Q400 | Corsair AX1200W | Corsair Strafe RGB | Corsair M65 RGB ELITE