Skip to content

Instantly share code, notes, and snippets.

@Eotones
Last active October 3, 2024 07:05
Show Gist options
  • Save Eotones/014da12aaea9f28ef0a40e9fe394b732 to your computer and use it in GitHub Desktop.
Save Eotones/014da12aaea9f28ef0a40e9fe394b732 to your computer and use it in GitHub Desktop.
[UserScript] 把Plurk的Referrer-Policy從origin改成same-origin

[UserScript] 把Plurk的Referrer-Policy從origin改成same-origin

解決新版Twitter(2020年3月)對於外部網站點擊連結到含有敏感內容推文無法觀看的bug

已知bug產生條件

  • 使用者已登入Twitter,並且帳號有開啟觀看敏感內容的權限
  • 使用者從Twitter以外的網站點擊含有敏感內容的Twitter連結,並且HTTP Request Header帶有來源網站的referrer

幾種解決方法

利用瀏覽器的Referrer-Policy阻止來源網站的referrer送出

  • 方法一: <a href="" rel="noreferrer">link</a>
  • 方法二: <a href="" referrerpolicy="no-referrer">link</a>
  • 方法三: <meta name="referrer" content="same-origin">

因為Plurk的噗文都是由JS動態產生,選方法三的解法會簡單一點

方法三的瀏覽器JS腳本

參考下方index.js,主要是利用JS腳本把Plurk的:

<meta name="referrer" content="origin">

改成:

<meta name="referrer" content="same-origin">

瀏覽器的JS腳本管理擴充套件

要在瀏覽器自動運行JS腳本需要安裝JS腳本管理擴充套件

  • Chrome 的 Tampermonkey
  • Firefox 的 TampermonkeyGreasemonkey

參考資料

// ==UserScript==
// @name Change Plurk Referrer-Policy
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 把Plurk的Referrer-Policy從origin改成same-origin
// @author You
// @match https://www.plurk.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
document.querySelectorAll('meta').forEach(e => {
if(e.name == 'referrer') e.content = "same-origin";
});
})();
@Eotones
Copy link
Author

Eotones commented Oct 3, 2024

(function() {
    'use strict';

    let elem = document.createElement("meta");
    //elem.name == 'referrer';
    elem.setAttribute("name", "referrer");
    elem.content = 'no-referrer';

    let elem_head = document.head;
    elem_head.appendChild(elem);

    let elem2 = document.createElement("meta");
    //elem2.name == 'referrer';
    elem2.setAttribute("name", "theme-color");
    elem2.content = '#333333';

    elem_head.appendChild(elem2);
})();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment