HackMD
    • Sharing Link copied
    • /edit
    • View mode
      • Edit mode
      • View mode
      • Book mode
      • Slide mode
      Edit mode View mode Book mode Slide mode
    • Note Permission
    • Read
      • Only me
      • Signed-in users
      • Everyone
      Only me Signed-in users Everyone
    • Write
      • Only me
      • Signed-in users
      • Everyone
      Only me Signed-in users Everyone
    • More (Comment, Invitee)
    • Publishing
    • Commenting Enable
      Disabled Forbidden Owners Signed-in users Everyone
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Invitee
    • No invitee
    • Options
    • Versions
    • Transfer ownership
    • Delete this note
    • Template
    • Save as template
    • Insert from template
    • Export
    • Google Drive Export to Google Drive
    • Gist
    • Import
    • Google Drive Import from Google Drive
    • Gist
    • Clipboard
    • Download
    • Markdown
    • HTML
    • Raw HTML
Menu Sharing Help
Menu
Options
Versions Transfer ownership Delete this note
Export
Google Drive Export to Google Drive Gist
Import
Google Drive Import from Google Drive Gist Clipboard
Download
Markdown HTML Raw HTML
Back
Sharing
Sharing Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
More (Comment, Invitee)
Publishing
More (Comment, Invitee)
Commenting Enable
Disabled Forbidden Owners Signed-in users Everyone
Permission
Owners
  • Forbidden
  • Owners
  • Signed-in users
  • Everyone
Invitee
No invitee
   owned this note    owned this note      
Published Linked with
Like BookmarkBookmarked
Subscribed
  • Any changes
    Be notified of any changes
  • Mention me
    Be notified of mention me
  • Unsubscribe
Subscribe
--- tags: digital-resilience, 數位韌性松, DigiResiTh0n --- # 民生數位服務韌性檢測 > [License under CC0, No Rights Reserved](https://creativecommons.org/public-domain/cc0/) > > [![Colloborate on HackMD](badge.svg)](https://g0v.hackmd.io/@irvin/digital-services-resilience) > > [github archive](https://github.com/irvin/digital-service-resilience) ``` 在天災人禍導致「台灣對外斷網」時,希望能盡量維持正常運作的重要網路服務。 ``` --- **情境:** 2023年初,馬祖的對外海纜被中國的拖網漁船/挖沙船「意外」挖斷,因而斷網長達數個月。假設此一情境發生在台灣,台灣對外網路骨幹海纜斷了八九成(甚至完全中斷),有哪些服務,是維持*基本生活品質*必要的服務,應在「只有島內網路」的狀態下維持正常運作? **範疇:** 國民第一線會使用的「網路服務」、「手機 APP」。 > 不納入實體離線服務如 7-11 店面與捷運⋯⋯等。也不列入各消費端服務的上游相關設施(如 EC 網站的物流,我們期待該網站能與其供應鏈上下游協作,推行進一步的韌性計畫) **目標:** 對列舉的重要民生服務進行檢測,確認其相對台灣對外斷網時的韌性狀態 **倡議:** 民生必需的服務,應備有對外網路嚴重障礙的應變計劃,並且定期進行相關的演練。 --- ## 韌性檢測結果 | 服務 | 斷網耐受性 | 檢測紀錄 | | -------- | -------- | -------- | | Pchome 24 | | [手動檢測紀錄](https://g0v.hackmd.io/5siiuEN1RAuFAI2H7l-phQ) | MoMo 產品頁 | X | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=https://www.momoshop.com.tw/category/LgrpCategory.jsp?l_code=2180000000)、[手動檢測紀錄](https://g0v.hackmd.io/9JfXRBRbSV2wE3ULGIL-XA) | 蝦皮購物 | | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=google.com) | Google | O | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=google.com) | Gmail | O | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=mail.google.com) | Google Maps | O | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=maps.google.com) | Yahoo Mail | O | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=mail.yahoo.com) | Bing | X | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=www.bing.com) | 華視新聞網 | ? | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=https://news.cts.com.tw/cna/politics/202502/202502232440801.html) | 中央社 | X | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=https://www.cna.com.tw/news/afe/202210220159.aspx) | 公視新聞 | O | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=https://news.pts.org.tw/article/739060) | 中央廣播電台 | X | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=www.rti.org.tw) | 數位發展部 | ? | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=moda.gov.tw) | 國防部 | ? | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=www.mnd.gov.tw) | 總統府 | O | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=www.president.gov.tw) | 內政部警政署防空避難專區 | O | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=adr.npa.gov.tw) | G0v | X | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=g0v.tw) | OCF | X | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=ocf.tw) | SITCON | X | [檢測紀錄](https://irvin.github.io/web-resilience-test-result/?url=sitcon.org) --- ## a) 重要數位服務 社群共同列舉民生上重要的數位服務,及基礎架構相關服務。 -> [重要民生網站與數位服務(與其替代品)](http://g0v.hackmd.io/lmNxS58KQOm5Rf-H4SbvSw) ## b) 服務韌性關鍵因素 - 網站 hosting 主機 - 所在地 & API 所在地 - 位置:國內 / 國外 - 是否是 anycast,且提供國內節點 - 網站頁面 & API 是否通過 CDN - CDN 是否是已知有落地的單位 - 例如:cloudflare (TPE)、Akamai - 網站使用的 library (jquery, anguler, vue... etc) - 是否使用公共的 CDN - 是否已知有落地 - cdnjs (over cloudflare) - jsdelivr? - 是否與網站一起 serve ## c) 韌性檢測步驟 以 Pchome 產品頁 `https://24h.pchome.com.tw/prod/DCAYAD-A900BIAMV` 為例([檢測過程紀錄](http://g0v.hackmd.io/5siiuEN1RAuFAI2H7l-phQ)) 1. 先打開 adblock / adguard,把不必要的元素都預先擋掉 2. 打開瀏覽器開發工具,停用快取,載入頁面 3. 切到 network,用 HAR 檔存下[完整的 request 紀錄](https://gist.github.com/irvin/8d7527636528fcb64ce2dc6b63679da3) 4. 資料清理 > - vscode 搜索 HAR `"url": "(.*)"` 抓出所有的 requests > - 按照 hostname 排序,同一個 sub-domain 只留一條 - 可直接丟掉的 requests 們 > 可參考擋廣告軟體的效果(例:假設被 ublock 阻擋)就可以直接丟棄 - analytics: - `analytics.google.com` - `play.google.com/log` - `www.google-analytics.com` - fb: - `connect.facebook.net` - `www.facebook.com` - 字體: - `fonts.gstatic.com` - ad: - `*.doubleclick.net` - `www.google.com.tw/ads` - `*.scupio.com` - `jscdn.appier.net` - 其他: - `www.youtube.com/embed/*` 5. 檢視 HAR entries 下的每一個 request 項目是否有境內可用性 > 以[第一項](https://gist.github.com/irvin/8d7527636528fcb64ce2dc6b63679da3#file-24h-pchome-com-tw_archive-24-02-24-15-39-25-har-L29) `https://24h.pchome.com.tw/prod/DCAYAD-A900BIAMV` 為例 a. 確認該資源資訊 ➜ ~ ipinfo 24h.pchome.com.tw Core - IP 34.149.253.14 - Anycast true - Hostname 14.253.149.34.bc.googleusercontent.com - City Kansas City - Region Missouri - Country United States (US) - Currency USD ($) - Location 39.0997,-94.5786 - Organization AS396982 Google LLC - Postal 64106 - Timezone America/Chicago b. 檢視 Anycast / 地理位置狀態 b-1. 假設無 Anycast,則參考該 ip 的地理位置,紀錄到表格上。如位置在島內,則在「是否可及」內打 O,在島外則打 X。 b-2. 假設有 Anycast,如果該地理位置不在島內,可檢查「該服務是否是已知有台灣節點者」,如上述範例 hostname 為GCP,對照 [雲端平台--IaaS](https://g0v.hackmd.io/lmNxS58KQOm5Rf-H4SbvSw#雲端平台--IaaS),確認其有台灣節點,則在「是否可及」內紀錄 `-` c. 最終以 `X` 與 `-` 的數字評估該網頁的耐受度。以 [pchome 產品頁](https://g0v.hackmd.io/5siiuEN1RAuFAI2H7l-phQ) 為例,共 7 個 `O` 位於境內、10 個 `-` 使用雲端服務可能有耐受性,沒有任何 `X` 非雲端的境外節點。 ## d) 自動化檢測工具 https://github.com/irvin/digital-service-resilience ### 安裝步驟 ```bash git clone https://github.com/irvin/digital-service-resilience.git cd digital-service-resilience npm install ``` ### (optional)設定 IPinfo Token ```bash export IPINFO_TOKEN=your_token_here # Linux/Mac set IPINFO_TOKEN=your_token_here # Windows CMD $env:IPINFO_TOKEN="your_token_here" # Windows PowerShell ``` ### 使用方式 ```bash npm check https://example.com node no-global-connection-check.js https://example.com ``` ### 檢測結果說明 - O:服務位於台灣境內 - ?:使用具有台灣節點的雲端服務(如 Google Cloud、AWS 等) - X:位於境外且非雲端服務 ### 範例輸出 ``` 開始檢測網站: https://example.com 收集到 X 個請求 清理後剩餘 Y 個唯一域名 檢測結果: ------------------- 境內服務 (O): 3 雲端服務 (?): 5 境外服務 (X): 1 詳細資訊: example.com: O (TW (HiNet)) cdn.example.com: - (US (GOOGLE)) api.example.com: X (US (Amazon)) ```

Import from clipboard

Advanced permission required

Your current role can only read. Ask the system administrator to acquire write and comment permission.

This team is disabled

Sorry, this team is disabled. You can't edit this note.

This note is locked

Sorry, only owner can edit this note.

Reach the limit

Sorry, you've reached the max length this note can be.
Please reduce the content or divide it to more notes, thank you!

Import from Gist

Import from Snippet

or

Export to Snippet

Are you sure?

Do you really want to delete this note?
All users will lost their connection.

Create a note from template

Create a note from template

Oops...
This template has been removed or transferred.


Upgrade

All
  • All
  • Team
No template.

Create a template


Upgrade

Delete template

Do you really want to delete this template?

This page need refresh

You have an incompatible client version.
Refresh to update.
New version available!
See releases notes here
Refresh to enjoy new features.
Your user state has changed.
Refresh to load new user state.

Sign in

Forgot password

or

Sign in via GitHub

New to HackMD? Sign up

Help

  • English
  • 中文
  • 日本語

Documents

Tutorials

Book Mode Tutorial

Slide Example

YAML Metadata

Resources

Releases

Blog

Policy

Terms

Privacy

Cheatsheet

Syntax Example Reference
# Header Header 基本排版
- Unordered List
  • Unordered List
1. Ordered List
  1. Ordered List
- [ ] Todo List
  • Todo List
> Blockquote
Blockquote
**Bold font** Bold font
*Italics font* Italics font
~~Strikethrough~~ Strikethrough
19^th^ 19th
H~2~O H2O
++Inserted text++ Inserted text
==Marked text== Marked text
[link text](https:// "title") Link
![image alt](https:// "title") Image
`Code` Code 在筆記中貼入程式碼
```javascript
var i = 0;
```
var i = 0;
:smile: :smile: Emoji list
{%youtube youtube_id %} Externals
$L^aT_eX$ LaTeX
:::info
This is a alert area.
:::

This is a alert area.

Versions

Versions

Upgrade now

Version named by    

More Less
  • Edit
  • Delete

Note content is identical to the latest version.
Compare with
    Choose a version
    No search result
    Version not found

Feedback

Submission failed, please try again

Thanks for your support.

On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

Please give us some advice and help us improve HackMD.

 

Thanks for your feedback

Remove version name

Do you want to remove this version name and description?

Transfer ownership

Transfer to
    Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.