#https #debian #wget
#https #debian #wget
Вопрос:
Я использую wget для извлечения Instagram JSON из URLhttps://www.instagram.com/instagram/?__a=1.
Запуск wget из моей локальной установки Manjaro возвращает 200 OK
и правильный ответ JSON, но запуск его с сервера Debian возвращает 302 found
.
Сначала я подумал, что это может быть из-за различий в версиях wget, но локальный запуск curl также работает, в то время как wget не работает должным образом.
Есть ли что-нибудь, что я должен настроить на своем сервере, чтобы получить правильный ответ? Я предполагаю, что соединение HTTPS не позволяет моему серверу подключиться должным образом.
Комментарии:
1. Загрузив URL в Chrome и скопировав запрос cURL и запустив его на сервере, я смог получить правильный ответ, но это больше похоже на обходной путь?
2. Очень интересно. Пожалуйста, попробуйте запустить Wget с
--debug
переключателем и поделиться выводом. Я очень хочу посмотреть, в чем различия3.@darnir не знал об
--debug
аргументе! Я выполнил команду в обеих системах:pastebin.com/1FiAuVER pastebin.com/q53u03ju
Ответ №1:
Итак, это странная особенность Instagram-серверов. Вы ничего не можете с этим поделать.
Проблема в том, что Instagram реагирует по-разному в зависимости от того, подключаетесь ли вы к их серверу по IPv4 или IPv6. Почему они это сделали, я не понимаю, но я могу надежно воспроизвести результат, управляя только этой переменной.
IPv4:
$ wget -O/dev/null -4 "https://www.instagram.com/instagram/?__a=1"
--2020-09-03 14:22:15-- https://www.instagram.com/instagram/?__a=1
Resolving www.instagram.com (www.instagram.com)... 157.240.27.174
Connecting to www.instagram.com (www.instagram.com)|157.240.27.174|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 118552 (116K) [application/json]
Saving to: ‘/dev/null’
100%[================================================================================================================================>] 118,552 306KB/s in 0.4s
2020-09-03 14:22:17 (306 KB/s) - ‘/dev/null’ saved [118552/118552]
IPv6:
$ wget -O/dev/null -6 "https://www.instagram.com/instagram/?__a=1"
--2020-09-03 14:22:54-- https://www.instagram.com/instagram/?__a=1
Resolving www.instagram.com (www.instagram.com)... 2a03:2880:f23f:e5:face:b00c:0:4420
Connecting to www.instagram.com (www.instagram.com)|2a03:2880:f23f:e5:face:b00c:0:4420|:443... connected.
HTTP request sent, awaiting response... 302 Found
Cookie coming from www.instagram.com attempted to set domain to www.instagram.com
Cookie coming from www.instagram.com attempted to set domain to www.instagram.com
Location: https://www.instagram.com/accounts/login/?next=/instagram/?__a=1 [following]
--2020-09-03 14:22:54-- https://www.instagram.com/accounts/login/?next=/instagram/?__a=1
Reusing existing connection to [www.instagram.com]:443.
HTTP request sent, awaiting response... 200 OK
Cookie coming from www.instagram.com attempted to set domain to www.instagram.com
Cookie coming from www.instagram.com attempted to set domain to www.instagram.com
Length: 48094 (47K) [text/html]
Saving to: ‘/dev/null’
100%[================================================================================================================================>] 48,094 --.-K/s in 0.04s
2020-09-03 14:22:54 (1.28 MB/s) - ‘/dev/null’ saved [48094/48094]
Это то же самое, что вы видите в своих журналах отладки. На Manjaro он устанавливает соединение IPv4, в то время как на Debian он устанавливает соединение IPv6, что приводит к различиям.
Добро пожаловать в мир сумасшедших веб-серверов 🙂
В любом случае, ответ на ваш вопрос заключается в использовании только соединения IPv4