解码以下字符串以获取URL

2024-05-14 22:45:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试解码以下字符串: b'\x08\x13"\xc2\xaf\x01https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/\xc3\x92\x01\xc2\xb3\x01https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/amp/'

但到目前为止还没有取得任何成功。 我需要获得第一个链接

我试着用'cp1252''UTF-8''UTF-16'和其他一些方法解码,但我的尝试没有成功。 你知道怎么做吗


Tags: lewwwit解码ilpdxc2ilfattoquotidiano
2条回答

通过快速浏览,我可以告诉您二进制部分是某种类型的头,其中包含有关数据的信息。不确定标头中的每个数字,最后一个字节之前的数字包含URL长度。对于第一个URL,长度为0xAF,对于第二个URL,长度为0xB3:

>>> a = 'https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/'
>>> len(a)
175
>>> hex(len(a))
'0xaf'
>>> b = 'https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/amp/'
>>> hex(len(b))
'0xb3'
>>>

我没有足够的关于其余二进制数据的信息,我也不知道URL长度超过255时会发生什么,但是对于您的字符串分析,我建议您查找http://字符串,往回走2个字节,读取长度并提取整个URL,然后从提取的URL的末尾重新开始:

c = 'your data which I dont copy again, but you should =)'
pos = 0
while True :
    url_start = c.find( 'http', pos )
    if url_start == -1 : break
    url_length = ord(c[url_start - 2])
    print 'start', url_start, 'length', url_length
    print c[url_start:url_start + url_length]
    pos = url_start + url_length

这将为您提供以下输出:

start 6 length 175
https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/
start 187 length 179
https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/amp/

如果您使用的是python3,那么可以使用带括号的print( ... )

您的数据似乎是一个二进制字符串,其中奇数外观的\x...组件是二进制字符串前面和内部的unicode字符。您提到需要获得第一个链接,我在您的示例中看到两个不同的URL

运行以下代码:

value = b'\x08\x13"\xc2\xaf\x01https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/\xc3\x92\x01\xc2\xb3\x01https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/amp/'
print(value.decode('utf-8'))

收益率:

"¯https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/Ò³https://www.ilfattoquotidiano.it/2020/01/11/zingaretti-dopo-le-regionali-sciolgo-il-pd-e-lancio-partito-nuovo-orlando-ragionare-su-come-rifondare-orfini-non-sia-fuffa/5664444/amp/

现在,您可以执行获取第一个链接所需的任何字符串操作

相关问题 更多 >

    热门问题