wget на сервере Debian получает 302 найденных, в то время как wget на Manjaro получает 200 OK

#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