關於拾藏的擷取程式(NotForget fetcher)
如果你在伺服器紀錄裡看到 NotForget/1.0 (+https://notforget.lakkev.com/bot),那是 Android App「拾藏 NotForget」的使用者,正在為自己剛收藏的一則連結取得預覽。
這是什麼
拾藏是個人收藏 App:使用者在其他 App 按「分享 → 拾藏」,拾藏保存連結,並取得標題與封面讓使用者認得這則收藏,類似聊天軟體貼上連結時出現的預覽卡片。它不是爬蟲:
- 請求從使用者自己的手機發出,不是從我們的伺服器;
- 只在使用者動作時執行:分享、貼上或新增一則連結時,或使用者打開某則收藏而它的縮圖需要補回時;
- 每次只處理使用者給的那一個網址,不跟隨頁面上的其他連結、不探索網站、不建立索引;
- 不登入、不送出使用者在你網站的帳號或 Cookie;
- 不下載影片或圖片原檔;封面只下載一次並縮成小圖,只顯示在該使用者自己的手機上。
識別字串(User-Agent)
| 情況 | User-Agent |
|---|---|
| 一般請求(oEmbed、網頁預覽標籤、短網址展開、封面圖) | NotForget/1.0 (+https://notforget.lakkev.com/bot) |
| bilibili(只對自稱行動裝置的用戶端提供伺服器端產生的頁面) | Mozilla/5.0 (Linux; Android; Mobile) NotForget/1.0 (+https://notforget.lakkev.com/bot) |
| 增強預覽的無痕網頁(抖音、小紅書、Facebook、Threads、TikTok) | 使用者手機上 Android WebView 原本的識別字串,後面加上 NotForget/1.0 (+https://notforget.lakkev.com/bot) |
我們不偽裝成桌面瀏覽器或搜尋引擎爬蟲。
請求方式與頻率
- 一般請求:每次逾時 6 秒;網頁只讀取前 512 KB(預覽標籤在
<head>裡);最多跟隨 5 次轉址;短網址展開只讀取轉址標頭,不讀內文。 - 增強預覽(使用者可在設定中關閉):
- Instagram:對
instagram.com/api/v1/oembed發出單一請求,不跟隨轉址,不帶 Cookie 或授權標頭; - 其他平台:在看不見的無痕 WebView 載入該作品的公開頁面一次;封鎖廣告與追蹤請求、樣式表、字型與影音;8 秒(抖音 12 秒)未完成即放棄;每支手機同一時間只載入一頁;
- 同一支手機對同一平台至少間隔 10 秒;被擋下的請求直接放棄,不排隊。
- Instagram:對
- 收到拒絕(例如 403、412、429)、驗證頁或錯誤時,不會自動重試;只會改用使用者分享的文字與自動生成的封面。之後只有在使用者再次打開那則收藏時,才可能再請求一次。
- 載入前會移除網址中分享者的追蹤參數。
因為每個請求都是使用者為自己收藏的單一連結發出,拾藏目前不讀取 robots.txt。如果你不希望拾藏取得你網站的預覽,請直接聯絡我們(見下方)。
平台與網站營運者:要求停止或申訴
如果拾藏造成你的困擾,或你希望拾藏停止取得你網站的預覽,請寫信到 privacy@lakkev.com,並附上你的網域。
- 我們會在 5 個工作天內回覆;
- 確認後,我們會在下一版 App 中停止對該網域的增強預覽,或停止對該網域取得任何預覽;
- 我們也可以依你的要求調整識別方式或請求頻率。
拾藏與 YouTube、Instagram、Facebook、Threads、TikTok、抖音、小紅書、X、bilibili、Spotify、Telegram、Apple 等平台沒有任何隸屬或合作關係。
About NotForget's fetcher (English)
If your logs show NotForget/1.0 (+https://notforget.lakkev.com/bot), a user of the Android app "拾藏 NotForget" is fetching a preview for one link they have just saved.
What it is
NotForget is a personal bookmarking app. A user taps "Share → NotForget" in another app; NotForget keeps the link and fetches its title and cover so the user can recognise it, much like the link preview a messaging app shows. It is not a crawler:
- requests come from the user's own phone, not from our servers;
- they happen only on a user action: sharing, pasting or adding a link, or opening a saved item whose thumbnail needs repairing;
- only the one URL the user gave is fetched; no links are followed, nothing is discovered or indexed;
- no sign-in, and never the user's account or cookies on your site;
- no original video or image is downloaded; the cover is fetched once, shrunk, and shown only on that user's phone.
User-Agent strings
| Case | User-Agent |
|---|---|
| Ordinary requests (oEmbed, page preview tags, short-link expansion, cover image) | NotForget/1.0 (+https://notforget.lakkev.com/bot) |
| bilibili (serves its server-rendered page only to clients that say they are mobile) | Mozilla/5.0 (Linux; Android; Mobile) NotForget/1.0 (+https://notforget.lakkev.com/bot) |
| Enhanced-preview private web view (Douyin, Xiaohongshu, Facebook, Threads, TikTok) | The phone's own Android WebView User-Agent followed by NotForget/1.0 (+https://notforget.lakkev.com/bot) |
We never pose as a desktop browser or a search-engine crawler.
How and how often
- Ordinary requests: 6-second timeout; only the first 512 KB of a page is read (preview tags live in
<head>); at most 5 redirects; short-link expansion reads only the redirect headers, not the body. - Enhanced preview (users can turn it off):
- Instagram: a single request to
instagram.com/api/v1/oembed, no redirects followed, no cookies or authorization headers; - other platforms: the work's public page is loaded once in an invisible private WebView; ads, trackers, style sheets, fonts and audio/video are blocked; abandoned after 8 seconds (12 for Douyin); one page at a time per phone;
- at least 10 seconds between requests to the same platform from one phone; a request that would be too soon is dropped, not queued.
- Instagram: a single request to
- On a refusal (such as 403, 412 or 429), a challenge page or an error there is no automatic retry; the app falls back to the user's share text and a generated cover. It may ask again only when the user later opens that saved item.
- The sharer's tracking parameters are removed from the URL before loading.
Because every request is made by a user for a single link they saved, NotForget currently does not read robots.txt. If you do not want NotForget to fetch previews from your site, please contact us directly.
Platform and site operators: opt out or complain
If NotForget causes you any problem, or you want it to stop fetching previews from your site, email privacy@lakkev.com with your domain.
- We reply within 5 business days;
- once confirmed, the next app release stops enhanced preview for that domain, or stops fetching any preview from it;
- we can also adjust how we identify ourselves or how often we request, at your request.
NotForget is not affiliated with YouTube, Instagram, Facebook, Threads, TikTok, Douyin, Xiaohongshu, X, bilibili, Spotify, Telegram, Apple or any other platform.