MD5 кодирование HTML дает 2 разных результата - PullRequest
0 голосов
/ 16 марта 2019

Может кто-нибудь помочь объяснить, почему это происходит?Если я соскребу HTML с сайта с помощью модуля запросов и использую hashlib для получения контрольной суммы md5, я получу один ответ.Затем, если я сохраню html как html-файл, открою его и сделаю ту же самую контрольную сумму md5, это даст мне другую контрольную сумму.

import requests
import hashlib

resp = requests.post("http://casesearch.courts.state.md.us/", timeout=120)
html = resp.text
print("CheckSum 1: " + hashlib.md5(html.encode('utf-8')).hexdigest())

f = open("test.html", "w+")
f.write(html)
f.close()

with open('test.html', "r", encoding='utf-8') as f:
    html2 = f.read()
print("CheckSum 2: " + hashlib.md5(html2.encode('utf-8')).hexdigest())

Результаты выглядят так:

CheckSum 1: e0b253903327c7f68a752c6922d8b47a
CheckSum 2: 3aaf94e0df9f1298d61830d99549ddb0

1 Ответ

1 голос
/ 16 марта 2019

При чтении из файла в текстовом режиме , Python может преобразовывать символы новой строки в зависимости от значения аргумента newlines , предоставленного open.

При чтении ввода из потока, если символ новой строки равен None, включается режим универсальных символов новой строки.Строки на входе могут оканчиваться на «\ n», «\ r» или «\ r \ n», и они переводятся в «\ n» перед возвратом вызывающей стороне.Если это '', включается универсальный режим новой строки, но окончания строки возвращаются вызывающей стороне без перевода.

Эта разница повлияет на сгенерированное значение хеш-функции.

...