Получаю ошибку и не могу понять почему?
def process(packet):
if packet.haslayer(http.HTTPRequest):
url = get_url(packet)
print('[+] HTTP Request >>' + url)
получаю ошибку:
TypeError: can only concatenate str (not "bytes") to str
Ответы (2 шт):
Автор решения: Constantine
→ Ссылка
Вы пытаетесь сложить два разных типа byte и str. Исправить можно указанием кодировки выводе:
print('[+] HTTP Request >>' + url.decode('utf8'))
Либо выводом через str.format (что бывает полезно для логов):
print('[+] HTTP Request >>'.format(url))
Автор решения: Dmitry
→ Ссылка
через f-строку примерно то же самое
print(f"[+] HTTP Request >>{url.decode()}")
Результат будет примерно такой
"[+] HTTP Request >>http://here-your-hostname.com"
Если не вызывать метод decode(), то ошибку вы не получите и по умолчанию будет вызван метод str(), но на выходе может быть неожиданный результат, который будет включать литеру b''. Что то такое:
"[+] HTTP Request >>b'http://here-your-hostname.com'"