"Это 4-й день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г."
Давайте сначала рассмотрим содержание вчерашней статьи: 1. Найдите целевое местоположение, 2. Загрузите веб-страницу, 3. Установите скорость загрузки и найдите целевой файл. Просто откройте песню Netease Cloud
https://music.163.com/#/song?id=25723157
Идентификатор каждой песни — это строка чисел, стоящих за ней. Так что, в принципе, мы можем получить идентификационный номер, если соберем соответствующие песни и зайдем на страницу воспроизведения. Это позволяет легко зацикливать и сканировать все комментарии для нескольких песен.
def get_comments(url):
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36',
'referer': 'http://music.163.com/'
}
params = "EuIF/+GM1OWmp2iaIwbVdYDaqODiubPSBToe5EdNp6LHTLf+aID/dWGU6bHWXS0jD9pPa/oY67TOwiicLygJ+BhMkOX/J1tZMhq45dcUIr6fLuoHOECYrOU6ySwH4CjxxdbW3lpVmksGEdlxbZevVPkTPkwvjNLDZHK238OuNCy0Csma04SXfoVM3iLhaFBT"
encSecKey = "db26c32e0cd08a11930639deadefda2783c81034be6445ca8f4fbedd346e1f9567375083aeb1a85e6ad6d9ae4532a49752c2169db8bcc04d38a79f9bed7facea42ee23f1b33538c34f82741318d9b4b846663b53b0b808dd0499dccfbc6c61fbf180c6fb24b1c2dd3c2c450ce09917d74be9424dab836fd2e671988ffbc6ae1b"
data = {
"params": params,
"encSecKey": encSecKey
}
name_id = url.split('=')[1]
target_url = "http://music.163.com/weapi/v1/resource/comments/R_SO_4_{}?csrf_token=".format(name_id)
res = requests.post(target_url, headers=headers, data=data)
return res
params и encSecKey — это данные, которые нужны серверу, эти два — зашифрованное содержимое. Полученный файл core.js, поскольку файл js очень большой, мы можем получить его по ключевому слову encSecKey и найти сегмент кода ключа. Точно так же эти два параметра в POST можно использовать и в других песнях.
После того, как комментарии найдены, нам нужно извлечь ключевые данные. Мы видим, что просканированные данные представлены в формате JSON. JSON — это облегченный формат обмена данными, который часто используется при передаче по сети.
Строки можно восстановить в структуры данных Python с помощью метода JSON.LOADS():
comments_json = json.loads(res.text)
Таким образом, значением ключа «hotComments» в словаре являются все замечательные комментарии!
def get_hot_comments(res):
comments_json = json.loads(res.text)
hot_comments = comments_json['hotComments']
with open('hot_comments.txt', 'w', encoding='utf-8') as file:
for each in hot_comments:
file.write(each['user']['nickname'] + ':\n\n')
file.write(each['content'] + '\n')
file.write("---------------------------------------\n")
На этом этапе, объединив предыдущие части, мы можем получить желаемый эффект!
Кроме того, NetEase Cloud Music Форма интерфейса API выглядит следующим образом:music.163.com/API/V1/Горячая вода…
Следует отметить, что если частота сканирования слишком высока, а их количество слишком велико, сервер заблокирует IP-адрес. Поэтому для более полного проекта сканера необходимо настроить прокси и пул IP-адресов.
Кроме того, друзья, которые не хотят быть одержимыми взломом параметров формы сообщения, могут попытаться смоделировать пользовательские операции способом python + selenium + PhantomJs. После нажатия на страницу, затем непосредственно проанализируйте элементы страницы, чтобы «видимые и легкость подъема» может быть достигнута, но эффективность будет немного ниже.