Як я можу повністю стерти кешовані перенаправлення із Safari?


27

У мене є пристрій із веб-панеллю керування, і випадково встановив його для переадресації всіх httpсторінок https, хоча деякі з них не працюють https. Хоча я з цього часу виправляв це, схоже, Safari запам'ятав переспрямування і відмовляється його забути, натомість постійно намагається перенаправити мене на недійсну httpsадресу.

Я вже закрив Safari, очищається ~/Library/Caches/com.apple.Safari/і , ~/Library/Cookies/HSTS.plistале вона по- , як і раніше здається, згадуючи редирект , коли я знову відкрити його.

Де ще Safari може зберігати цю інформацію? Я можу отримати доступ до правильної сторінки через Firefox або Chrome, тому це може бути не сервісом на всій системі, або якщо це не той, який використовують інші браузери.

На жаль, оскільки веб-панель надається пристроєм, я не вірю, що я можу налаштувати заголовки або встановити переадресацію назад до правильної URL-адреси, що, здається, є варіантами, запропонованими в інших подібних питаннях, тому мені дійсно потрібно з’ясувати, де це дані зберігаються, тому я можу знищити їх вогнем.



Чи спробували ви скасувати / відсунути свою ~/Library/Safariпапку і побачити, чи це вирішує проблему? Якщо це так, ви можете експериментувати з елементами всередині папки, поки не знайдете файл винуватця.
цікаво, що

Як ви встановили переадресацію? З розширенням чи є налаштування в Safari для цього?
сова

Чи все-таки переадресація відбувається із приватним вікном перегляду?
AllInOne

@AllInOne цікава ідея, але, на жаль, вона все ще трапляється під приватним переглядом.
Харавік

Відповіді:


29

Виходячи з відповіді квантів :

Мені не вдалося скористатися, launchctl unload /System/Library/LaunchAgents/com.apple.nsurlstoraged.plistоскільки ввімкнено захист цілісності системи :

$ launchctl unload /System/Library/LaunchAgents/com.apple.nsurlstoraged.plist
/System/Library/LaunchAgents/com.apple.nsurlstoraged.plist: Operation not permitted while System Integrity Protection is engaged

Однак мені вдалося обійти це, зробивши наступне:

  • killall nsurlstoraged(зупиняє процес nsurlstoraged вашого користувача; я фактично запускався sudo killall nsurlstoraged, але підозрюю, що не потрібно також зупиняти nsurlstoraged системи, оскільки кеш знаходиться в папці Бібліотека користувача)
  • rm -f ~/Library/Cookies/HSTS.plist (видаляє кеш HSTS)
  • launchctl start /System/Library/LaunchAgents/com.apple.nsurlstoraged.plist (перезапускає nsurlstoraged)

Я не можу достатньо підтримати цю відповідь. Здається, що принаймні на Сьєррі просто видалення HSTS.plistфайлу не вирішить проблему, оскільки він буде продовжувати перебудовуватися. Однак, після вбивства nsurlstoragedі потім видаляючи при цьому HSTS файл-що зробив трюк!
nvahalik

1
Велике спасибі, прихильне, але я зробив це так. 1. Закрийте Safari 2. Відредагуйте ~/Library/Cookies/HSTS.plistта видаліть запис для потрібного сайту на http 3. Перезавантажте комп'ютер
Jason S

Так, перезапуск - це порада, яку дають всі інші відповіді, але з 20 відкритими програмами набагато зручніше та швидше перезапустити nsurlstoraged процес. Дякую @nvahalik!
axello

2
Оновлення Mojave: команда rm -f ~/Library/Cookies/HSTS.plistповернеться, Operation not permittedякщо ви не надали повний доступ до диска до Terminal.app в System Preferences => Безпека та конфіденційність => Конфіденційність. Інакше рішення спрацювало чудово! Спасибі!
joehanna

@ nvahalik Те, що відбувається, здається навіть більш дивним, ніж файл, який відновлюється; навіть не rm ~/Library/Cookies/HSTS.plist ; touch ~/Library/Cookies/HSTS.plist ; chmod guo-wrx ~/Library/Cookies/HSTS.plistдопомогли мені, але killall nsurlstoragedзробили.
Спалах Шерідан

6

Якщо ввімкнути меню "Розвиток" у налаштуваннях Safari, ви можете очистити кеш звідти (CMD + ALT + E).

Чи можете ви підтвердити, що відкриття панелі управління пристрою в приватному вікні Safari (або іншому веб-браузері) працює правильно?


На жаль, параметр меню розробки не очищає переадресацію, не закриває Safari і видаляє вручну, ~/Library/Caches/com.apple.Safariтож переспрямовування має зберігатися десь в іншому місці. HSTS була функцією, яку я випадково ввімкнув, але я вже видалив ~/Library/Cookies/HSTS.plist.
Харавік

1
Я також можу підтвердити, що ця відповідь не виправляє
маль

Цей працював на мене
Меттью Каулі

5

На основі відповіді @ Haravikk: /apple//a/267783/62907

У когось є ідеї, який процес відповідає за файл ~ / Бібліотека / Файли cookie / HSTS.plist?

fs_usage може допомогти:

❯❯❯❯ sudo fs_usage | grep HSTS
16:11:03    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000238   nsurlstorage
16:11:03    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000009   nsurlstorage
16:11:03  open              /Users/quanta/Library/Cookies/HSTS.plist                                         0.016268   nsurlstorage
16:11:03    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000008   nsurlstorage
16:11:03    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000003   nsurlstorage
16:11:03  access            /Users/quanta/Library/Cookies/HSTS.plist                                         0.000011   dbfseventsd
16:11:04  lstat64           /Users/quanta/Library/Cookies/HSTS.plist                                         0.000008   fseventsd
16:11:08    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000006   nsurlstorage
16:11:08    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000002   nsurlstorage
16:11:08  open              /Users/quanta/Library/Cookies/HSTS.plist                                         0.000144   nsurlstorage
16:11:08    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000002   nsurlstorage
16:11:08    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000003   nsurlstorage
16:11:08  access            /Users/quanta/Library/Cookies/HSTS.plist                                         0.000021   dbfseventsd
16:11:09  lstat64           /Users/quanta/Library/Cookies/HSTS.plist                                         0.000042   fseventsd

Отже, ми можемо:

launchctl unload /System/Library/LaunchAgents/com.apple.nsurlstoraged.plist

потім:

rm -f ~/Library/Cookies/HSTS.plist

і спробуйте ще раз.


Спасибі! Це працювало для мене. Я багато разів видаляв HSTS.plist (закриття / перезапуск Safari до і після), і він завжди відтворювався з точно таким же вмістом, як і раніше. Спочатку вивантаження nsurlstoraged, потім видалення plist та перезапуск nsurlstoraged дали мені чистий список.
lucianf

2
Ви можете покращити це, зазначивши, що вам потрібно вийти з системи Safari і перезапустити її. Крім того, а не видаляти HSTS.plist, я просто видалив проблемний ключ домену.
мальхал

3

У вас будуть хороші результати, якщо ви використовуєте командний рядок на curlпристрої, щоб переконатися, що він не робить перенаправлення. У Safari насправді немає механізму переписувати адреси, особливо якщо ви переходите до приватного веб-перегляду, щоб видалити історію, файли cookie тощо ...

Якщо ви не впевнені, що достатньо очистили сафарі, можете також протестувати, відкривши системні налаштування та створивши чистий / новий обліковий запис користувача на Mac і протестувавши сайт на абсолютно чистій версії Safari після виходу зі свого звичайного користувача .


Однозначно немає переадресації (функція, до якої я намагаюся підключитися, зовсім не підтримує HTTPS, тому включення HSTS для всього пристрою було жахливою, жахливою помилкою); Я можу з’єднати файли з іншими обліковими записами користувачів та веб-переглядачами, тому в моєму головному акаунті десь зберігається щось, що
кешується

"Сафарі насправді не має двигуна для переписування адрес" - У мене зараз така ж проблема виникає в Safari із веб-сайтом, розміщеним на моєму ноутбуці, і згортається (разом із Firefox, Chrome та вікном приватного перегляду саме там Safari) на той же обліковий запис користувача завантажує сайт просто чудово. Тож має бути щось спільне із самим Сафарі.
Пол Д. Уайт

3

Тому я знайшов вирішення проблеми, хоча це не остаточна відповідь на власне питання, тому я не буду відзначати його як таке, поки не зможу знайти більше інформації.

Виявляється, що файл ~/Library/Cookies/HSTS.plistсправді був джерелом проблеми, як я підозрював, однак видалення його з ураженого облікового запису користувача не працює, навіть із закритим Safari, оскільки він відтворений через невідомий час, укупі з порушенням запис, який примушував недійсне переспрямування.

Тож моє рішення було наступним:

  1. Переконайтеся, що у вас на комп’ютері принаймні один обліковий запис користувача (якщо ні, створіть його).
  2. Вихід із облікового запису постраждалого користувача.
  3. Увійти в інший обліковий запис користувача (обліковий запис гостя може бути недостатним, залежно від обмежень).
  4. Дізнайтеся коротке ім’я вашого облікового запису користувача; якщо ви не знаєте, то найкращий спосіб перевірити це заглянути у розділі Налаштування системи -> Користувачі. Зазвичай, якщо це буде повне ім'я, нижній регістр і без пробілів, тож якщо ваше повне ім’я "Джон Сміт", тоді коротке ім'я може бути "джонсмітом".
  5. Відкрийте вікно у терміналі, введіть su shortnameзаміну "короткого імені" на коротке ім'я облікового запису користувача, який впливає. Натисніть клавішу Enter і, коли буде запропоновано, введіть пароль для цього облікового запису.
  6. Тепер введіть наступну команду rm ~/Library/Cookies/HSTS.plistі натисніть клавішу Enter, це видалить файл зберігання HSTS.
  7. Нарешті наберіть exit, натисніть клавішу Enter та закрийте Термінал.

На цьому етапі ви можете знову увійти до облікового запису користувача, і перенаправлення HSTS, яке порушило право, має бути загублено назавжди.

Тепер, хоча це забезпечує корисний спосіб вирішення проблеми, я хотів би знати, чому видалення файлу HSTS.plist із мого облікового запису не вдалося; той факт, що він відтворений, означає, що за нього відповідає деякий фоновий процес, а це означає, що слід видалити файл із облікового запису користувача, просто зупинивши цей процес, видаливши файл, а потім повторно запустивши процес.

У когось є ідеї, який процес відповідає за ~/Library/Cookies/HSTS.plistфайл? Як тільки ми дізнаємось, що слід дати можливість простішого виправлення проблеми.


2

Ось ідея!

Ви кажете, що не можете скасувати переадресацію, встановивши сервер перенаправляти https-запити назад на http (оскільки у вас немає доступу адміністратора для цього).

Але що робити, якщо ви обдурите сафарі підключення до іншого сервера, який пропонує це зворотне переспрямування?

Ви можете встановити це у /etc/hostsфайлі локальної машини .

Наприклад, скажімо, що поточне кешоване переспрямування переходить від http://example.comдо https://example.com.

Тепер налаштуйте або визначте URL-адресу, який ви можете запитувати на будь-якому сервері в світі, який перенаправляє з https назад на http. Скажімо, що сервер має адресу https://redirecting.example.com.

Потім знайдіть IP-адресу redirecting.example.com. У Терміналі ви можете зробити так:

host redirecting.example.com

Ви отримуєте такий результат:

redirecting.example.com has address 69.69.69.69

Тепер відкрийте файл / etc / hosts та додайте новий рядок, який вказує запити для example.com на ip адресу redirecting.example.com, як-от так:

### point host example.com at the ip address of redirecting.example.com
69.69.69.69 example.com

Збережіть зміни та очистіть кеш DNS у терміналі так:

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder; say DNS cache flushed

Тоді в Safari зробити запит https://example.comна відповідь слід перенаправленням назад http://example.com, в який момент (перехрещеними пальцями) ваше перенаправлення Safari від 6 місяців тому буде перезаписане.

По завершенні видаліть рядок, який ви додали до файлу / etc / hosts, і знову очистіть кеш DNS.


Хоча це гарна ідея, вона не вирішує справжню проблему; Я не шукаю обхідних шляхів, але скоріше хочу знати, куди це переспрямування кешується таким чином, що Safari продовжує використовувати його, хоча він більше не дійсний (на сервері не ввімкнено HSTS, я просто включив його коротко помилково ). Його треба десь зберігати, але я не можу зрозуміти, де.
Харавік

Це не те, що я б назвав вирішенням проблеми, оскільки, напевно, це вирішить актуальну проблему . Це працює лише на тому, що ви не маєте управління пристроєм. Але я вас чую - було б непогано мати можливість очистити кешоване налаштування безпосередньо. Чи проявляється технологія Safari Technology Preview також поганою поведінкою?
AllInOne

На жаль, так; Я не думаю, що це проблема з самим Safari як такою, а скоріше з якоюсь послугою macOS, від якої вона залежить, оскільки, як видається, ~/Library/Cookies/HSTS.plistвинуватцем, але видалення з ураженого облікового запису не працює (як це відтворено) через деякий час, доповнити поганим перенаправленням). Не впевнений, який процес це робить, хоча.
Харавік

2

Перепробувавши всі ці рішення, для мене працювало:

  • Видаліть усі екземпляри домену з історії Safari
  • Киньте сафарі
  • Видалити ~/Library/Cookies/HSTS.plist
  • Перезапустити

2

Мої два центи на новий macOS Mojave 10.14 Beta (18A365a)

а) Ви не можете остаточно зупинитисьnsurlstoraged , він заново запускається за 2 секунди, навіть якщо судо

б) ви не можете видалити "HSTS.plist": якщо ви введете:

sudo rm -f ~/Library/Cookies/HSTS.plist

Ви отримуєте: Операція заборонена

в) навіть якщо ви спробуєте:

ls -la ~/Library/Cookies/

Ви отримуєте: Операція заборонена

те саме для

nano ~/Library/Cookies/HSTS.plist 

(порожній файл ..)

Таким чином, ви не можете точно отримати доступ до нього. (можливо, SIP?)

г) дивним чином ви можете видалити, якщо з Finder:

CMD Shift G "~ / Бібліотека / Файли cookie /"

введіть тут опис зображення

і ви можете видалити за допомогою миші:

введіть тут опис зображення

д) ще дивніше: ви можете перейти на робочий стіл за допомогою миші, відредагувати та розмістити його назад !

(справжня дурниця, графічний інтерфейс є потужнішим, ніж судо.)


2

У Safari, Firefox та Chrome також потрібно лише відкрити бічну панель розробника , вибрати вкладку мережі та відключити кеш-пам'ять g.

У Safari це перекреслена трубка, синя поруч із логотипом сміттєвого сміття. Активуйте це, і старе постійне переспрямування слід ігнорувати. Safari відключає кешування 503 постійних переадресацій

Найбільша перевага полягає в тому, що вам не доведеться возитися з файлами, ви не будете видаляти всі записи HTST і втрачаєте переваги безпеки. Також він працює у веб-переглядачах.


Хоча це дуже корисно знати, чи можете ви підтвердити, чи функціонує воно як постійне рішення? тобто - якщо кеш буде ввімкнено, проблема знову виникне, або тимчасове відключення її змиє?
Харавік

1
@Haravikk в моїх тестах не повернеться до використання постійного перенаправлення, коли замість цього може бути завантажена нова сторінка. Навіть після закриття вікна розробки, якщо це відповідає на ваше запитання
luckydonald

1

Спочатку переконайтеся, що сервер не надсилає заголовок Strict-Transport-Security.
Це можна зробити за допомогою curl -I( -Iпросто отримує заголовки)

curl -I http://my-http-domain.com

Якщо сервер надсилає заголовок Strict-Transport-Security, видалення його з браузера не матиме ефекту, оскільки наступного разу, коли ви перейдете на сайт, він буде встановлений знову.

Видаліть свій сайт із бази даних безпечної транспортної безпеки Safari

  1. Закрийте Safari
  2. Відредагуйте ~/Library/Cookies/HSTS.plist
    пошук запису для веб-сайту, до якого ви хочете отримати доступ, через http та видаліть його та збережіть файл.
    • Я вважаю за краще редагувати, а не видаляти, оскільки не потрібно видаляти дійсні записи.
    • Я редагую файли плістів за допомогою Xcode, але якщо він не встановлений, ви можете просто скористатися текстовим редактором.
  3. Перезавантажте комп'ютер.
    • Замість перезавантаження комп'ютера ви можете перезапустити, nsurlstoragedале це може бути задіяно завдяки SIP, тому перезавантаження комп'ютера може бути простішим. Знайомства відповідь Гранта і відповідь Quanta в про перезапускnsurlstoraged

1

Я зробив сценарій з відповіді Grand Heaslip:

#!/bin/sh

osascript -e 'quit app "Safari"'
sleep 2
killall nsurlstoraged
sleep 2
rm -f ~/Library/Cookies/HSTS.plist
launchctl start /System/Library/LaunchAgents/com.apple.nsurlstoraged.plist

Він витончено закінчує сафарі, зупиняє nsurlstoraged, видаляє HSTS.plist і починає nsurlstoraged знову. Це працювало для мене чудово на macOS 10.13.5


1

Я використовую Mojave (10.14). Я спробував методи, видані до цих пір, щоб видалити HSTS.plist. Крім того, мені потрібно було додати термінал до системних налаштувань> Безпека та конфіденційність> Повний список доступу до диска, щоб вилікувати симптом "Операція заборонена" при переліку вмісту ~ / Бібліотека / Файли cookie /.

Але видалити файл та перезапустити демон не вийшло. Тому я спробував відкрити Safari знову, перейшов до Налаштування, конфіденційності, Керування даними веб-сайтів Потім я видалив усі "кеш-файли, локальне зберігання" для доменного імені, яке порушує право. Це вирішило мою проблему.

Зараз не можу сказати, чи потрібно було видалити HSTS чи ні.


Я спробував те саме і перезавантажив двічі, але для мене працював лише користувальницький інтерфейс Safari. Дякую!
Барт Веркойейн

-1

Спробуйте це, перейдіть до кроку 1: Перейдіть до папки ~ / Бібліотека, крок 2: Видаліть папку Safari з ~ / Бібліотека / Підтримка програм, Крок 3: Видаліть папки нижче з ~ / Бібліотека / Кеші, Крок 4: потім Видаліть ~ / Папка "Бібліотека / Safari PS": Зберігайте сафарі закритим під час вищезазначених операцій


1
Відповіді на запитання різних повинні бути більше, ніж просто посилання. Добре включити посилання, але будь ласка, узагальнюйте або витягуйте його у відповідь. Ідея полягає в тому, щоб зробити відповідь самостійною.
nohillside
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.