- 掃描 ID:
- 19eb7c0b-8a41-4d85-9b98-e075a2cb5f30已完成
- 已提交的 URL:
- https://social.9tail.net/tags/api
- 報告完成時間:
連結 · 找到 1 個
從頁面中識別的傳出連結
連結 | Text |
---|---|
https://blog.gslin.org/archives/2024/11/28/12102/%e8%87%aa%e5%b7%b1%e6%9e%b6-llm-frontend-%e6%8e%a5-api-%e7%9a%84/ | https://blog.gslin.org/archives/2024/11/28/12102/%e8%87%aa%e5%b7%b1%e6%9e%b6-llm-frontend-%e6%8e%a5-api-%e7%9a%84/ |
JavaScript 變數 · 找到 13 個
在頁面的視窗物件上載入的全域 JavaScript 變數是在函數外部宣告的變數,可從目前範圍內程式碼中的任何位置存取
名稱 | 類型 |
---|---|
0 | object |
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
webpackJsonp | object |
setImmediate | function |
clearImmediate | function |
__REACT_INTL_CONTEXT__ | object |
__core-js_shared__ | object |
core | object |
主控台記錄訊息 · 找到 1 條
記錄到 Web 主控台的訊息
類型 | 類別 | 記錄 |
---|---|---|
warning | other |
|
HTML
頁面的原始 HTML 主體
<!DOCTYPE html><html lang="zh-TW" style="margin-right: 0px;"><head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1" name="viewport">
<link href="/favicon.ico" rel="icon" type="image/x-icon">
<link href="/packs/media/icons/favicon-16x16-c58fdef40ced38d582d5b8eed9d15c5a.png" rel="icon" sizes="16x16" type="image/png">
<link href="/packs/media/icons/favicon-32x32-249409a6d9f300112c51af514d863112.png" rel="icon" sizes="32x32" type="image/png">
<link href="/packs/media/icons/favicon-48x48-c1197e9664ee6476d2715a1c4293bf61.png" rel="icon" sizes="48x48" type="image/png">
<link href="/packs/media/icons/apple-touch-icon-57x57-c9dca808280860c51d0357f6a3350f4d.png" rel="apple-touch-icon" sizes="57x57">
<link href="/packs/media/icons/apple-touch-icon-60x60-bb247db195d9ee9d8c687b2b048508d9.png" rel="apple-touch-icon" sizes="60x60">
<link href="/packs/media/icons/apple-touch-icon-72x72-799d90b81f5b28cea7355a0c0b356381.png" rel="apple-touch-icon" sizes="72x72">
<link href="/packs/media/icons/apple-touch-icon-76x76-015d73d770413d121873193153ae4ab5.png" rel="apple-touch-icon" sizes="76x76">
<link href="/packs/media/icons/apple-touch-icon-114x114-211e68807b8d15707666a8d326d338b1.png" rel="apple-touch-icon" sizes="114x114">
<link href="/packs/media/icons/apple-touch-icon-120x120-4c4e647d758bf1b2f47a53e2165a01d2.png" rel="apple-touch-icon" sizes="120x120">
<link href="/packs/media/icons/apple-touch-icon-144x144-ff3110f7772743bdd0c1c47fb7b2d4e0.png" rel="apple-touch-icon" sizes="144x144">
<link href="/packs/media/icons/apple-touch-icon-152x152-b12cbb1baaf4a6111d0efd391fd829c9.png" rel="apple-touch-icon" sizes="152x152">
<link href="/packs/media/icons/apple-touch-icon-167x167-6f21a68f6a05a8b5cf25b1729e553728.png" rel="apple-touch-icon" sizes="167x167">
<link href="/packs/media/icons/apple-touch-icon-180x180-a75559a0af48064c1b7c71b81f3bf7c6.png" rel="apple-touch-icon" sizes="180x180">
<link href="/packs/media/icons/apple-touch-icon-1024x1024-db6849588b44f525363c37b65ef0ac66.png" rel="apple-touch-icon" sizes="1024x1024">
<link color="#6364FF" href="/packs/media/images/logo-symbol-icon-de9e68dc49b19eb5cd142d3316f9e95e.svg" rel="mask-icon">
<link href="/manifest" rel="manifest">
<meta content="#191b22" name="theme-color">
<meta content="yes" name="apple-mobile-web-app-capable">
<title>#api - 九尾站</title>
<link rel="stylesheet" crossorigin="anonymous" href="/packs/css/common-a729b6b0.css" media="all" integrity="sha256-KDzFV9ckqn2zELncHPapWY+nN4HgaUP+jxBFg4sinFA=">
<link rel="stylesheet" crossorigin="anonymous" href="/packs/css/default-5cdab84a.chunk.css" media="all" integrity="sha256-L8eQ0Ym7Fu9f68q1Tcy/OClgLZkq/lpheHWoNZYUhdw=">
<script src="/packs/js/common-606b197cda2ad42ce727.js" crossorigin="anonymous" integrity="sha256-FPektPlbWembqyODBJ/RGtEKpbHuo9RpJBRZSOgrQr4="></script>
<link rel="preload" href="/packs/js/locale/zh-TW-json-af29a376b6e4e4766abe.chunk.js" as="script" type="text/javascript" integrity="sha256-NwjpUDLK/m9GfbleN4LqLCdNgdoUlNfRjGu5fu9lmjs=">
<meta content="QrEetaeA65tU7jHyINg9Ag==" name="style-nonce">
<link rel="stylesheet" href="/inert.css" media="all" id="inert-style">
<link rel="stylesheet" href="https://social.9tail.net/custom.css" media="all">
<meta content="noindex" name="robots">
<meta content="九尾-台灣萌象站
台灣泛ACG長毛象站" name="description">
<meta content="在 social.9tail.net 運作的 Mastodon 站點" property="og:site_name">
<meta content="https://social.9tail.net/tags/api" property="og:url">
<meta content="website" property="og:type">
<meta content="九尾站" property="og:title">
<meta content="九尾-台灣萌象站
台灣泛ACG長毛象站" property="og:description">
<meta content="https://social.9tail.net/system/site_uploads/files/000/000/004/@1x/592b530f790cd946.png" property="og:image">
<meta content="1200" property="og:image:width">
<meta content="822" property="og:image:height">
<meta content="summary_large_image" property="twitter:card">
<meta content="BK-Qt0dnmSaJ_YJyZpNSfaQujO4lG_EZ_9i9Uq-NBnIdHpgx2Oa7eHKRgk-_QJHWjainSktpP6BTvI2SNdY626U=" name="applicationServerKey">
<script id="initial-state" type="application/json">{"meta":{"streaming_api_base_url":"wss://social.9tail.net","access_token":null,"locale":"zh-TW","domain":"social.9tail.net","title":"九尾站","admin":null,"search_enabled":false,"repository":"mastodon/mastodon","source_url":"https://github.com/mastodon/mastodon","version":"4.2.0","limited_federation_mode":false,"mascot":"/system/site_uploads/files/000/000/003/original/cc761815ff492a48.png","profile_directory":true,"trends_enabled":true,"registrations_open":true,"timeline_preview":true,"activity_api_enabled":false,"single_user_mode":false,"trends_as_landing_page":true,"status_page_url":null,"sso_redirect":null,"auto_play_gif":null,"display_media":null,"reduce_motion":null,"use_blurhash":null},"compose":{"text":""},"accounts":{},"media_attachments":{"accept_content_types":[".jpg",".jpeg",".png",".gif",".webp",".heic",".heif",".avif",".webm",".mp4",".m4v",".mov",".ogg",".oga",".mp3",".wav",".flac",".opus",".aac",".m4a",".3gp",".wma","image/jpeg","image/png","image/gif","image/heic","image/heif","image/webp","image/avif","video/webm","video/mp4","video/quicktime","video/ogg","audio/wave","audio/wav","audio/x-wav","audio/x-pn-wave","audio/vnd.wave","audio/ogg","audio/vorbis","audio/mpeg","audio/mp3","audio/webm","audio/flac","audio/aac","audio/m4a","audio/x-m4a","audio/mp4","audio/3gpp","video/x-ms-asf"]},"settings":{},"languages":[["aa","Afar","Afaraf"],["ab","Abkhaz","аҧсуа бызшәа"],["ae","Avestan","avesta"],["af","Afrikaans","Afrikaans"],["ak","Akan","Akan"],["am","Amharic","አማርኛ"],["an","Aragonese","aragonés"],["ar","Arabic","اللغة العربية"],["as","Assamese","অসমীয়া"],["av","Avaric","авар мацӀ"],["ay","Aymara","aymar aru"],["az","Azerbaijani","azərbaycan dili"],["ba","Bashkir","башҡорт теле"],["be","Belarusian","беларуская мова"],["bg","Bulgarian","български език"],["bh","Bihari","भोजपुरी"],["bi","Bislama","Bislama"],["bm","Bambara","bamanankan"],["bn","Bengali","বাংলা"],["bo","Tibetan","བོད་ཡིག"],["br","Breton","brezhoneg"],["bs","Bosnian","bosanski jezik"],["ca","Catalan","Català"],["ce","Chechen","нохчийн мотт"],["ch","Chamorro","Chamoru"],["co","Corsican","corsu"],["cr","Cree","ᓀᐦᐃᔭᐍᐏᐣ"],["cs","Czech","čeština"],["cu","Old Church Slavonic","ѩзыкъ словѣньскъ"],["cv","Chuvash","чӑваш чӗлхи"],["cy","Welsh","Cymraeg"],["da","Danish","dansk"],["de","German","Deutsch"],["dv","Divehi","Dhivehi"],["dz","Dzongkha","རྫོང་ཁ"],["ee","Ewe","Eʋegbe"],["el","Greek","Ελληνικά"],["en","English","English"],["eo","Esperanto","Esperanto"],["es","Spanish","Español"],["et","Estonian","eesti"],["eu","Basque","euskara"],["fa","Persian","فارسی"],["ff","Fula","Fulfulde"],["fi","Finnish","suomi"],["fj","Fijian","Vakaviti"],["fo","Faroese","føroyskt"],["fr","French","Français"],["fy","Western Frisian","Frysk"],["ga","Irish","Gaeilge"],["gd","Scottish Gaelic","Gàidhlig"],["gl","Galician","galego"],["gu","Gujarati","ગુજરાતી"],["gv","Manx","Gaelg"],["ha","Hausa","هَوُسَ"],["he","Hebrew","עברית"],["hi","Hindi","हिन्दी"],["ho","Hiri Motu","Hiri Motu"],["hr","Croatian","Hrvatski"],["ht","Haitian","Kreyòl ayisyen"],["hu","Hungarian","magyar"],["hy","Armenian","Հայերեն"],["hz","Herero","Otjiherero"],["ia","Interlingua","Interlingua"],["id","Indonesian","Bahasa Indonesia"],["ie","Interlingue","Interlingue"],["ig","Igbo","Asụsụ Igbo"],["ii","Nuosu","ꆈꌠ꒿ Nuosuhxop"],["ik","Inupiaq","Iñupiaq"],["io","Ido","Ido"],["is","Icelandic","Íslenska"],["it","Italian","Italiano"],["iu","Inuktitut","ᐃᓄᒃᑎᑐᑦ"],["ja","Japanese","日本語"],["jv","Javanese","basa Jawa"],["ka","Georgian","ქართული"],["kg","Kongo","Kikongo"],["ki","Kikuyu","Gĩkũyũ"],["kj","Kwanyama","Kuanyama"],["kk","Kazakh","қазақ тілі"],["kl","Kalaallisut","kalaallisut"],["km","Khmer","ខេមរភាសា"],["kn","Kannada","ಕನ್ನಡ"],["ko","Korean","한국어"],["kr","Kanuri","Kanuri"],["ks","Kashmiri","कश्मीरी"],["ku","Kurmanji (Kurdish)","Kurmancî"],["kv","Komi","коми кыв"],["kw","Cornish","Kernewek"],["ky","Kyrgyz","Кыргызча"],["la","Latin","latine"],["lb","Luxembourgish","Lëtzebuergesch"],["lg","Ganda","Luganda"],["li","Limburgish","Limburgs"],["ln","Lingala","Lingála"],["lo","Lao","ລາວ"],["lt","Lithuanian","lietuvių kalba"],["lu","Luba-Katanga","Tshiluba"],["lv","Latvian","latviešu valoda"],["mg","Malagasy","fiteny malagasy"],["mh","Marshallese","Kajin M̧ajeļ"],["mi","Māori","te reo Māori"],["mk","Macedonian","македонски јазик"],["ml","Malayalam","മലയാളം"],["mn","Mongolian","Монгол хэл"],["mr","Marathi","मराठी"],["ms","Malay","Bahasa Melayu"],["mt","Maltese","Malti"],["my","Burmese","ဗမာစာ"],["na","Nauru","Ekakairũ Naoero"],["nb","Norwegian Bokmål","Norsk bokmål"],["nd","Northern Ndebele","isiNdebele"],["ne","Nepali","नेपाली"],["ng","Ndonga","Owambo"],["nl","Dutch","Nederlands"],["nn","Norwegian Nynorsk","Norsk Nynorsk"],["no","Norwegian","Norsk"],["nr","Southern Ndebele","isiNdebele"],["nv","Navajo","Diné bizaad"],["ny","Chichewa","chiCheŵa"],["oc","Occitan","occitan"],["oj","Ojibwe","ᐊᓂᔑᓈᐯᒧᐎᓐ"],["om","Oromo","Afaan Oromoo"],["or","Oriya","ଓଡ଼ିଆ"],["os","Ossetian","ирон æвзаг"],["pa","Panjabi","ਪੰਜਾਬੀ"],["pi","Pāli","पाऴि"],["pl","Polish","Polski"],["ps","Pashto","پښتو"],["pt","Portuguese","Português"],["qu","Quechua","Runa Simi"],["rm","Romansh","rumantsch grischun"],["rn","Kirundi","Ikirundi"],["ro","Romanian","Română"],["ru","Russian","Русский"],["rw","Kinyarwanda","Ikinyarwanda"],["sa","Sanskrit","संस्कृतम्"],["sc","Sardinian","sardu"],["sd","Sindhi","सिन्धी"],["se","Northern Sami","Davvisámegiella"],["sg","Sango","yângâ tî sängö"],["si","Sinhala","සිංහල"],["sk","Slovak","slovenčina"],["sl","Slovenian","slovenščina"],["sn","Shona","chiShona"],["so","Somali","Soomaaliga"],["sq","Albanian","Shqip"],["sr","Serbian","српски језик"],["ss","Swati","SiSwati"],["st","Southern Sotho","Sesotho"],["su","Sundanese","Basa Sunda"],["sv","Swedish","Svenska"],["sw","Swahili","Kiswahili"],["ta","Tamil","தமிழ்"],["te","Telugu","తెలుగు"],["tg","Tajik","тоҷикӣ"],["th","Thai","ไทย"],["ti","Tigrinya","ትግርኛ"],["tk","Turkmen","Türkmen"],["tl","Tagalog","Wikang Tagalog"],["tn","Tswana","Setswana"],["to","Tonga","faka Tonga"],["tr","Turkish","Türkçe"],["ts","Tsonga","Xitsonga"],["tt","Tatar","татар теле"],["tw","Twi","Twi"],["ty","Tahitian","Reo Tahiti"],["ug","Uyghur","ئۇيغۇرچە"],["uk","Ukrainian","Українська"],["ur","Urdu","اردو"],["uz","Uzbek","Ўзбек"],["ve","Venda","Tshivenḓa"],["vi","Vietnamese","Tiếng Việt"],["vo","Volapük","Volapük"],["wa","Walloon","walon"],["wo","Wolof","Wollof"],["xh","Xhosa","isiXhosa"],["yi","Yiddish","ייִדיש"],["yo","Yoruba","Yorùbá"],["za","Zhuang","Saɯ cueŋƅ"],["zh","Chinese","中文"],["zu","Zulu","isiZulu"],["zh-CN","Chinese (China)","简体中文"],["zh-HK","Chinese (Hong Kong)","繁體中文(香港)"],["zh-TW","Chinese (Taiwan)","繁體中文(臺灣)"],["zh-YUE","Cantonese","廣東話"],["ast","Asturian","Asturianu"],["chr","Cherokee","ᏣᎳᎩ ᎦᏬᏂᎯᏍᏗ"],["ckb","Sorani (Kurdish)","سۆرانی"],["cnr","Montenegrin","crnogorski"],["jbo","Lojban","la .lojban."],["kab","Kabyle","Taqbaylit"],["ldn","Láadan","Láadan"],["lfn","Lingua Franca Nova","lingua franca nova"],["sco","Scots","Scots"],["sma","Southern Sami","Åarjelsaemien Gïele"],["smj","Lule Sami","Julevsámegiella"],["szl","Silesian","ślůnsko godka"],["tok","Toki Pona","toki pona"],["xal","Kalmyk","Хальмг келн"],["zba","Balaibalan","باليبلن"],["zgh","Standard Moroccan Tamazight","ⵜⴰⵎⴰⵣⵉⵖⵜ"]],"push_subscription":null,"role":null}</script>
<script src="/packs/js/application-e66d0e3da893d3e4f438.chunk.js" crossorigin="anonymous" integrity="sha256-becahmS0Fl0ecExB8OYeIx5tVNiUUd0FubZriBfDM2s="></script><script charset="utf-8" src="/packs/js/locale/zh-TW-json-af29a376b6e4e4766abe.chunk.js"></script>
<script charset="utf-8" src="/packs/js/features/hashtag_timeline-09901ccec559004735bb.chunk.js"></script><meta name="robots" content="noindex" data-react-helmet="true"></head>
<body class="app-body theme-default no-reduce-motion layout-single-column">
<div class="notranslate app-holder" data-props="{"locale":"zh-TW"}" id="mastodon"><div tabindex="-1"><div class="ui"><div class="ui__header"><a class="ui__header__logo" href="/"><svg viewBox="0 0 261 66" class="logo logo--wordmark" role="img"><title>Mastodon</title><use xlink:href="#logo-symbol-wordmark"></use></svg><img src="/packs/media/images/logo-d4b5dc90fd3e117d141ae7053b157f58.svg" alt="Mastodon" class="logo logo--icon"></a><div class="ui__header__links"><a href="/auth/sign_up" class="button"><span>新增帳號</span></a><a href="/auth/sign_in" class="button button-tertiary"><span>登入</span></a></div></div><div class="columns-area__panels"><div class="columns-area__panels__pane columns-area__panels__pane--compositional"><div class="columns-area__panels__pane__inner"></div></div><div class="columns-area__panels__main"><div class="tabs-bar__wrapper"><div id="tabs-bar__portal"><div class="column-header__wrapper"><h1 class="column-header"><button><i class="fa fa-hashtag column-header__icon fa-fw"></i>api</button><div class="column-header__buttons"><button class="column-header__back-button"><i class="fa fa-chevron-left column-back-button__icon fa-fw"></i><span>上一頁</span></button></div></h1><div class="column-header__collapsible collapsed" tabindex="-1"><div class="column-header__collapsible-inner"></div></div></div></div></div><div class="columns-area columns-area--mobile"><div role="region" aria-label="#api" class="column"><div class="scrollable"><div role="feed" class="item-list"><div class="hashtag-header"><div class="hashtag-header__header"><h1>#api</h1><button class="button" disabled="" type="button">追蹤主題標籤</button></div><div><span><strong><span>2</span></strong> 則嘟文</span><span aria-hidden="true"> · </span><span><strong><span>2</span></strong> 名參與者</span><span aria-hidden="true"> · </span><span>本日有 <strong><span>0</span></strong> 則嘟文</span></div></div><article aria-posinset="1" aria-setsize="20" data-id="113556310279563556" tabindex="-1"><div tabindex="-1"><div class="status__wrapper status__wrapper-public focusable" tabindex="0" aria-label="Gea-Suan Lin, 自己架 LLM frontend (接 API 的)一開始是發現 OpenAI 的 API 反應速度相比 ChatGPT (US$20/mo 的付費版) 好像比較快,所以想要自己架起來直接接 OpenAI 的 API。我一開使用 ChatGPT self-hosted alternative site:github.com 跟其他類似的條件搜尋,沒找到適合的軟體,所以後來跑去問 CQD,問了以後他先推薦 NextChat 這套,我看了一下不是很愛,但就有個起點了。除了直接當伸手牌以外,問他另外的目的https://blog.gslin.org/archives/2024/11/28/12102/%e8%87%aa%e5%b7%b1%e6%9e%b6-llm-frontend-%e6%8e%a5-api-%e7%9a%84/#API #Computer #Murmuring #Network #Service #Software #WWW #api #frontend #llm #open #openai #webui, 11月27日 下午06:22, [email protected]" data-nosnippet="true"><div class="status status-public" data-id="113556310279563556"><div class="status__info"><a href="/@[email protected]/113556310279563556" class="status__relative-time" target="_blank" rel="noopener noreferrer"><span class="status__visibility-icon"><i class="fa fa-globe" title="公開"></i></span><time datetime="2024-11-27T18:22:54.000Z" title="2024年11月27日 18:22">1 天</time></a><a href="/@[email protected]" title="[email protected]" class="status__display-name" target="_blank" rel="noopener noreferrer"><div class="status__avatar"><div class="account__avatar" style="width: 46px; height: 46px;"><img src="https://social.9tail.net/system/cache/accounts/avatars/110/655/830/114/938/954/original/f9d8a92f2b001a81.png" alt="[email protected]"></div></div><span class="display-name"><bdi><strong class="display-name__html">Gea-Suan Lin</strong></bdi> <span class="display-name__account">@[email protected]</span></span></a></div><div class="status__content status__content--with-action" tabindex="0"><div class="status__content__text status__content__text--visible translate" lang="zh"><p>自己架 LLM frontend (接 API 的)</p><p>一開始是發現 OpenAI 的 API 反應速度相比 ChatGPT (US$20/mo 的付費版) 好像比較快,所以想要自己架起來直接接 OpenAI 的 API。</p><p>我一開使用 ChatGPT self-hosted alternative site:github.com 跟其他類似的條件搜尋,沒找到適合的軟體,所以後來跑去問 CQD,問了以後他先推薦 NextChat 這套,我看了一下不是很愛,但就有個起點了。</p><p>除了直接當伸手牌以外,問他另外的目的</p><p><a href="https://blog.gslin.org/archives/2024/11/28/12102/%e8%87%aa%e5%b7%b1%e6%9e%b6-llm-frontend-%e6%8e%a5-api-%e7%9a%84/" rel="nofollow noopener noreferrer" translate="no" target="_blank" class="status-link unhandled-link" title="https://blog.gslin.org/archives/2024/11/28/12102/%e8%87%aa%e5%b7%b1%e6%9e%b6-llm-frontend-%e6%8e%a5-api-%e7%9a%84/"><span class="invisible">https://</span><span class="ellipsis">blog.gslin.org/archives/2024/1</span><span class="invisible">1/28/12102/%e8%87%aa%e5%b7%b1%e6%9e%b6-llm-frontend-%e6%8e%a5-api-%e7%9a%84/</span></a></p></div></div><a href="https://blog.gslin.org/archives/2024/11/28/12102/%e8%87%aa%e5%b7%b1%e6%9e%b6-llm-frontend-%e6%8e%a5-api-%e7%9a%84/" class="status-card" target="_blank" rel="noopener noreferrer"><div class="status-card__image"><i class="fa fa-file-text"></i></div><div class="status-card__content"><span class="status-card__host"><span lang="zh">Gea-Suan Lin's BLOG</span> · <time datetime="2024-11-27T18:22:51.000Z" title="2024年11月27日 18:22">1 天</time></span><strong class="status-card__title" title="自己架 LLM frontend (接 API 的)" lang="zh">自己架 LLM frontend (接 API 的)</strong><span class="status-card__description">一開始是發現 OpenAI 的 API 反應速度相比 ChatGPT (US$20/mo 的付費版) 好像比較快,所以想要自己架起來直接接 OpenAI 的 API。 我一開使用 ChatGPT self-hosted alternative site:github.</span></div></a><div class="hashtag-bar"><a href="/tags/API">#<span>API</span></a><a href="/tags/Computer">#<span>Computer</span></a><a href="/tags/Murmuring">#<span>Murmuring</span></a><button class="link-button"><span>…及其他 9 個</span></button></div><div class="status__action-bar"><button type="button" aria-label="回覆" aria-hidden="false" title="回覆" class="status__action-bar__button icon-button icon-button--with-counter" tabindex="0" style="font-size: 18px; width: auto; height: 23.1429px; line-height: 18px;"><i class="fa fa-reply fa-fw" aria-hidden="true"></i> <span class="icon-button__counter"><span class="animated-number"><span style="position: static; transform: translateY(0%);"><span>0</span></span></span></span></button><button type="button" aria-label="轉嘟" aria-hidden="false" title="轉嘟" class="status__action-bar__button icon-button" tabindex="0" style="font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 18px;"><i class="fa fa-retweet fa-fw" aria-hidden="true"></i> </button><button type="button" aria-label="最愛" aria-hidden="false" title="最愛" class="status__action-bar__button star-icon icon-button" tabindex="0" style="font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 18px;"><i class="fa fa-star fa-fw" aria-hidden="true"></i> </button><button type="button" aria-label="書籤" aria-hidden="false" title="書籤" class="status__action-bar__button bookmark-icon icon-button disabled" tabindex="0" disabled="" style="font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 18px;"><i class="fa fa-bookmark fa-fw" aria-hidden="true"></i> </button><div class="status__action-bar__dropdown"><span><button type="button" aria-label="更多" aria-hidden="false" title="更多" class="icon-button" tabindex="0" style="font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 18px;"><i class="fa fa-ellipsis-h fa-fw" aria-hidden="true"></i> </button></span></div></div></div></div></div></article><article aria-posinset="2" aria-setsize="20" data-id="113537711204073725" tabindex="-1" style="height: 630.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>Gea-Suan Lin</span><span><p>Hyrum's Law</p><p>看到「Hyrum's Law in Golang」這則提到的 Hyrum's Law:</p><p>With a sufficient number of users of an API,<br>it does not matter what you promise in the contract:<br>all observable behaviors of your system<br>will be depended on by somebody.</p><p>文章裡面引用了這段程式碼:</p><p>func (e *MaxBytesError) Error() string {<br> // Due to Hyrum's law, this text cannot be ch</p><p><a href="https://blog.gslin.org/archives/2024/11/24/12083/hyrums-law/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">blog.gslin.org/archives/2024/1</span><span class="invisible">1/24/12083/hyrums-law/</span></a></p><p><a href="https://abpe.org/tags/API" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>API</span></a> <a href="https://abpe.org/tags/Computer" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Computer</span></a> <a href="https://abpe.org/tags/Murmuring" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Murmuring</span></a> <a href="https://abpe.org/tags/Network" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Network</span></a> <a href="https://abpe.org/tags/Programming" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Programming</span></a> <a href="https://abpe.org/tags/Software" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Software</span></a> <a href="https://abpe.org/tags/effect" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>effect</span></a> <a href="https://abpe.org/tags/hyrum" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>hyrum</span></a> <a href="https://abpe.org/tags/law" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>law</span></a> <a href="https://abpe.org/tags/side" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>side</span></a></p></span></div></div></article><article aria-posinset="3" aria-setsize="20" data-id="113469332274482198" tabindex="-1" style="height: 726.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>卡拉今天看了什麼</span><span><p>All the data can be yours — Jerome Paulos</p><blockquote><a href="https://readhacker.news/s/6hvjZ" rel="nofollow noopener noreferrer" target="_blank">Link</a></blockquote>📌<span> Summary: 這篇文章介紹了作者在開發非官方學校軟體過程中的經驗與技巧,特別是如何尋找和利用各種未記錄的API。作者分享了多種方法:如在GitHub上搜尋代碼、識別網頁中的fetch請求、利用WordPress的內建REST API、檢查robots.txt文件、直接Google搜尋API端點、進行URL猜測、閱讀和調試JavaScript,以及下載行動應用探查HTTP API。這些方法不僅能夠幫助開發者找到所需數據,還能促進對API結構的理解。<br><br></span>🎯<span> Key Points:<br>- 搜尋GitHub:利用Regex找到Brown大學的JSON和XML端點。<br>- 識別fetch請求:觀察頁面異步加載來發現API。<br>- WordPress API:使用內建的REST API提取媒體。<br>- 檢查robots.txt:瞭解哪些內容可能被隱藏。<br>- Google搜尋:直接搜尋API端點,發現驚喜結果。<br>- URL猜測:透過直覺猜測結構進一步探索。<br>- 閱讀JavaScript:幫助理解API和結構。<br>- 使用工具:建議各種工具來輔助反向工程。<br><br></span>🔖 Keywords: <a href="https://social.mikala.one/tags/API" rel="nofollow noopener noreferrer" target="_blank">#API</a> <a href="https://social.mikala.one/tags/開發" rel="nofollow noopener noreferrer" target="_blank">#開發</a> <a href="https://social.mikala.one/tags/反向工程" rel="nofollow noopener noreferrer" target="_blank">#反向工程</a> <a href="https://social.mikala.one/tags/數據" rel="nofollow noopener noreferrer" target="_blank">#數據</a> <a href="https://social.mikala.one/tags/工具" rel="nofollow noopener noreferrer" target="_blank">#工具</a><p></p></span></div></div></article><article aria-posinset="4" aria-setsize="20" data-id="113289533867982989" tabindex="-1" style="height: 432.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>Gea-Suan Lin</span><span><p>Google Chrome 的 Canary 版本 (通路) 移除 Manifest V2</p><p>在「Manifest v2 is now removed from Chrome canary (chrome.com)」這邊看到的,Google Chrome 的 Canary 版本已經移除 Manifest V2:「Manifes</p><p><a href="https://blog.gslin.org/archives/2024/10/11/12021/google-chrome-%e7%9a%84-canary-%e7%89%88%e6%9c%ac-%e9%80%9a%e8%b7%af-%e7%a7%bb%e9%99%a4-manifest-v2/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">blog.gslin.org/archives/2024/1</span><span class="invisible">0/11/12021/google-chrome-%e7%9a%84-canary-%e7%89%88%e6%9c%ac-%e9%80%9a%e8%b7%af-%e7%a7%bb%e9%99%a4-manifest-v2/</span></a></p><p><a href="https://abpe.org/tags/Browser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Browser</span></a> <a href="https://abpe.org/tags/Computer" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Computer</span></a> <a href="https://abpe.org/tags/GoogleChrome" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>GoogleChrome</span></a> <a href="https://abpe.org/tags/Murmuring" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Murmuring</span></a> <a href="https://abpe.org/tags/Network" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Network</span></a> <a href="https://abpe.org/tags/Software" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Software</span></a> <a href="https://abpe.org/tags/ad" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ad</span></a> <a href="https://abpe.org/tags/adblock" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>adblock</span></a> <a href="https://abpe.org/tags/api" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>api</span></a> <a href="https://abpe.org/tags/blocker" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>blocker</span></a> <a href="https://abpe.org/tags/browser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>browser</span></a> <a href="https://abpe.org/tags/canary" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>canary</span></a> <a href="https://abpe.org/tags/chrome" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>chrome</span></a> <a href="https://abpe.org/tags/chromium" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>chromium</span></a> <a href="https://abpe.org/tags/google" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>google</span></a> <a href="https://abpe.org/tags/manifest" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>manifest</span></a> <a href="https://abpe.org/tags/v2" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>v2</span></a> <a href="https://abpe.org/tags/webrequest" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>webrequest</span></a></p></span></div></div></article><article aria-posinset="5" aria-setsize="20" data-id="113092551351529136" tabindex="-1" style="height: 520.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>Gea-Suan Lin</span><span><p>Problem Details for HTTP APIs (RFC 7807 變成 RFC 9457)</p><p>之前寫過「RFC 定義的 application/problem+json (或是 xml)」,最近在找資料發現 2016 年的 RFC 7807 被 2023 年的 RFC 9457 取代了,兩份的標題都是「Problem Details for HTTP APIs」。</p><p>在「Appendix D. Changes from RFC 7807」這邊有提到做了什麼修改,看起來有三點:</p><p>Section 4.2 introduc</p><p><a href="https://blog.gslin.org/archives/2024/09/07/11968/problem-details-for-http-apis-rfc-7807-%e8%ae%8a%e6%88%90-rfc-9457/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">blog.gslin.org/archives/2024/0</span><span class="invisible">9/07/11968/problem-details-for-http-apis-rfc-7807-%e8%ae%8a%e6%88%90-rfc-9457/</span></a></p><p><a href="https://abpe.org/tags/API" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>API</span></a> <a href="https://abpe.org/tags/Computer" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Computer</span></a> <a href="https://abpe.org/tags/Murmuring" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Murmuring</span></a> <a href="https://abpe.org/tags/Network" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Network</span></a> <a href="https://abpe.org/tags/WWW" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>WWW</span></a> <a href="https://abpe.org/tags/api" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>api</span></a> <a href="https://abpe.org/tags/details" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>details</span></a> <a href="https://abpe.org/tags/error" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>error</span></a> <a href="https://abpe.org/tags/http" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>http</span></a> <a href="https://abpe.org/tags/json" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>json</span></a> <a href="https://abpe.org/tags/problem" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>problem</span></a> <a href="https://abpe.org/tags/rfc" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>rfc</span></a> <a href="https://abpe.org/tags/spec" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>spec</span></a></p></span></div></div></article><article aria-posinset="6" aria-setsize="20" data-id="113038081568062825" tabindex="-1" style="height: 438.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>中年插畫家</span><span><p><a href="https://g0v.social/tags/ClaudeTRPG" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ClaudeTRPG</span></a> <a href="https://g0v.social/tags/Claude" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Claude</span></a> <a href="https://g0v.social/tags/API" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>API</span></a></p><p>我人在醫院,扮演 GM與 AI 開始玩 TRPG.</p><p>玩到後期會發現 AI 其實沒有辦法好好地應用遊戲規則。以前會覺得你怎麼知道規則卻不懂做,現在知道有知識文本不代表他們知道怎麼使用,所以要做一個專案知識去引導他們使用一些在遊戲中創造出來的形象,以獲得優勢或吸引其運用手頭上的資源來主動創造優勢。</p><p>我覺得 AI 不能自然而然地做到這些,可能是因為還沒有夠多的人靈活地使用規則給他學習,或是我身為 GM, 對於規則的使用有破綻與漏洞,讓他不能理解。</p><p>看來我要和他一起逐條討論規則了…… 我怎麼覺得我好像在讀法律。</p><p>我一直在網路上看到 API, 我在想我在做的和 API 開發有關嗎?但是我不會程式語言</p></span></div></div></article><article aria-posinset="7" aria-setsize="20" data-id="113024382848916315" tabindex="-1" style="height: 564.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>Gea-Suan Lin</span><span><p>找出並聯絡 AirPods 的失主</p><p>從「Did you lose your AirPods? (alexyancey.com)」這邊看到的,原文是「Did you lose your AirPods?」。</p><p>如同標題提到的,作者朋友撿到 AirPods,接上 iPhone 後能得到的資訊除了序號以外只有失主的電話末四碼了,不知道怎麼聯絡失主。</p><p>接下來作者開始想辦法,先假設失主是在同一個州,這樣電話的區碼 (前三碼) 就會一樣了,中間三碼的排列組合就只剩下 1000 組 (作者寫 99</p><p><a href="https://blog.gslin.org/archives/2024/08/26/11948/%e6%89%be%e5%87%ba%e4%b8%a6%e8%81%af%e7%b5%a1-airpods-%e7%9a%84%e5%a4%b1%e4%b8%bb/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">blog.gslin.org/archives/2024/0</span><span class="invisible">8/26/11948/%e6%89%be%e5%87%ba%e4%b8%a6%e8%81%af%e7%b5%a1-airpods-%e7%9a%84%e5%a4%b1%e4%b8%bb/</span></a></p><p><a href="https://abpe.org/tags/API" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>API</span></a> <a href="https://abpe.org/tags/Computer" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Computer</span></a> <a href="https://abpe.org/tags/Murmuring" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Murmuring</span></a> <a href="https://abpe.org/tags/Network" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Network</span></a> <a href="https://abpe.org/tags/Service" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Service</span></a> <a href="https://abpe.org/tags/airpods" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>airpods</span></a> <a href="https://abpe.org/tags/apple" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>apple</span></a> <a href="https://abpe.org/tags/hack" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>hack</span></a> <a href="https://abpe.org/tags/imessage" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>imessage</span></a> <a href="https://abpe.org/tags/lost" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>lost</span></a> <a href="https://abpe.org/tags/osint" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>osint</span></a></p></span></div></div></article><article aria-posinset="8" aria-setsize="20" data-id="112994865939446929" tabindex="-1" style="height: 546.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>卡拉今天看了什麼</span><span><p>Prompt Caching (beta) - Anthropic</p><blockquote><a href="https://readhacker.news/s/6d6KH" rel="nofollow noopener noreferrer" target="_blank">Link</a></blockquote>📌<span> Summary: <br>Prompt Caching 是一項新功能,旨在優化 API 使用,通過允許從特定提示前綴恢復來顯著降低處理時間和成本。此功能特別適用於重複性任務和需要大量背景信息的情況。通過使用 </span><code>cache_control</code><span> 參數,使用者可以緩存大型文本,重用之前的請求結果。Prompt Caching 目前處於公測階段,只支持特定模型,並引入新的定價結構,重點在於提高效能和降低費用。<br><br></span>🎯<span> Key Points:<br>- Prompt Caching 目的是減少重複請求的處理時間及成本。<br>- 使用 </span><code>cache_control</code><span> 參數可以緩存整個提示以重用內容。<br>- 目前支持的模型包括 Claude 3.5 Sonnet 和 Claude 3 Haiku。<br>- 新的定價結構包括不同的費用計算方式,緩存寫入和讀取的費用相差顯著。<br>- 建議將靜態內容置於提示開始部分以獲得最佳效果。<br><br></span>🔖<span> Keywords: <br></span><a href="https://social.mikala.one/tags/PromptCaching" rel="nofollow noopener noreferrer" target="_blank">#PromptCaching</a> <a href="https://social.mikala.one/tags/API" rel="nofollow noopener noreferrer" target="_blank">#API</a> <a href="https://social.mikala.one/tags/Claude" rel="nofollow noopener noreferrer" target="_blank">#Claude</a> <a href="https://social.mikala.one/tags/效率" rel="nofollow noopener noreferrer" target="_blank">#效率</a> <a href="https://social.mikala.one/tags/定價" rel="nofollow noopener noreferrer" target="_blank">#定價</a><p></p></span></div></div></article><article aria-posinset="9" aria-setsize="20" data-id="112955206879971918" tabindex="-1" style="height: 1010.09px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>卡拉今天看了什麼</span><span><p>Leaked Secrets and Unlimited Miles: Hacking the Largest Airline and Hotel Rewards Platform</p><blockquote><a href="https://readhacker.news/s/6cN7G" rel="nofollow noopener noreferrer" target="_blank">Link</a></blockquote>📌<span> Summary: <br>- 三名研究人員在 points.com 發現多個安全漏洞,該公司為全球大部分航空和酒店獎勵計劃提供後端。 <br>- 如果攻擊者利用這些漏洞,可以獲取敏感客戶帳戶信息,包括姓名、帳單地址、部分信用卡號碼、電子郵件地址、電話號碼、獎勵點數、客戶授權令牌以及多個交易細節。 <br>- 攻擊者還可以利用這些漏洞來轉移獎勵點數、訪問客戶帳戶和使用未授權的訪問權限來訪問 points.com 全球管理控制台和忠誠度錢包管理面板。 <br>- points.com 安全團隊迅速回應並修復了所有報告的漏洞。 <br><br></span>🎯<span> Key Points: <br>- points.com 為全球大部分航空和酒店獎勵計劃提供後端。 <br>- 研究人員發現了一個允許未經授權訪問 points.com 客戶訂單記錄的 HTTP 路徑穿越漏洞。 <br>- 攻擊者可以利用第二個漏洞,即授權繞過,僅使用姓氏和獎勵點數來轉移航空獎勵點數,並訪問客戶帳戶。 <br>- 研究人員發現了一個漏洞,可以通過使用未授權的訪問權限訪問 points.com 全球管理控制台和忠誠度錢包管理面板。 <br>- points.com 安全團隊迅速回應並修復了所有報告的漏洞。 <br><br></span>🔖<span> Keywords: <br></span><a href="https://social.mikala.one/tags/points" rel="nofollow noopener noreferrer" target="_blank">#points</a><span>.com <br></span><a href="https://social.mikala.one/tags/airline" rel="nofollow noopener noreferrer" target="_blank">#airline</a><span> <br></span><a href="https://social.mikala.one/tags/hotel" rel="nofollow noopener noreferrer" target="_blank">#hotel</a><span> <br></span><a href="https://social.mikala.one/tags/loyalty" rel="nofollow noopener noreferrer" target="_blank">#loyalty</a><span> <br></span><a href="https://social.mikala.one/tags/reward" rel="nofollow noopener noreferrer" target="_blank">#reward</a><span> <br></span><a href="https://social.mikala.one/tags/points" rel="nofollow noopener noreferrer" target="_blank">#points</a><span>.com <br></span><a href="https://social.mikala.one/tags/API" rel="nofollow noopener noreferrer" target="_blank">#API</a><span> <br></span><a href="https://social.mikala.one/tags/OAuth" rel="nofollow noopener noreferrer" target="_blank">#OAuth</a><span> 2.0 <br></span><a href="https://social.mikala.one/tags/MAC" rel="nofollow noopener noreferrer" target="_blank">#MAC</a><span> <br></span><a href="https://social.mikala.one/tags/SSO" rel="nofollow noopener noreferrer" target="_blank">#SSO</a><span> <br></span><a href="https://social.mikala.one/tags/flask" rel="nofollow noopener noreferrer" target="_blank">#flask</a><span> <br></span><a href="https://social.mikala.one/tags/session" rel="nofollow noopener noreferrer" target="_blank">#session</a><span> <br></span><a href="https://social.mikala.one/tags/cookie" rel="nofollow noopener noreferrer" target="_blank">#cookie</a><span> <br></span><a href="https://social.mikala.one/tags/admin" rel="nofollow noopener noreferrer" target="_blank">#admin</a><span> <br></span><a href="https://social.mikala.one/tags/unlimited" rel="nofollow noopener noreferrer" target="_blank">#unlimited</a><span> <br></span><a href="https://social.mikala.one/tags/first" rel="nofollow noopener noreferrer" target="_blank">#first</a><span> class <br></span><a href="https://social.mikala.one/tags/flights" rel="nofollow noopener noreferrer" target="_blank">#flights</a><span> <br></span><a href="https://social.mikala.one/tags/hotels" rel="nofollow noopener noreferrer" target="_blank">#hotels</a><span> <br></span><a href="https://social.mikala.one/tags/cruises" rel="nofollow noopener noreferrer" target="_blank">#cruises</a><span> <br></span><a href="https://social.mikala.one/tags/meals" rel="nofollow noopener noreferrer" target="_blank">#meals</a><p></p></span></div></div></article><article aria-posinset="10" aria-setsize="20" data-id="112941900660024557" tabindex="-1" style="height: 638.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>卡拉今天看了什麼</span><span><p>Hacking a Virtual Power Plant | rya.nc</p><blockquote><a href="https://readhacker.news/s/6cA9K" rel="nofollow noopener noreferrer" target="_blank">Link</a></blockquote><span>Summary: 文章講述作者利用GivEnergy提供的本地網路API來監控和控制家中的太陽能板和電池儲能系統。作者發現API的簽名使用了512位RSA金鑰,但這個金鑰已經被破解,任何人都可以生成有效的API令牌並訪問任何用戶的數據。作者與GivEnergy的安全團隊聯繫,他們迅速修復了這個問題,將金鑰更改為4096位,並承諾在修復後邀請作者進行測試。<br><br>Key Points:<br>- 作者利用GivEnergy提供的本地網路API來監控和控制家中的太陽能板和電池儲能系統。<br>- 作者發現API的簽名使用了512位RSA金鑰,但這個金鑰已經被破解。<br>- 作者與GivEnergy的安全團隊聯繫,他們迅速修復了這個問題,將金鑰更改為4096位,並承諾在修復後邀請作者進行測試。<br><br>Keywords:<br></span><a href="https://social.mikala.one/tags/RSA" rel="nofollow noopener noreferrer" target="_blank">#RSA</a> <a href="https://social.mikala.one/tags/API" rel="nofollow noopener noreferrer" target="_blank">#API</a> <a href="https://social.mikala.one/tags/Token" rel="nofollow noopener noreferrer" target="_blank">#Token</a> <a href="https://social.mikala.one/tags/Signature" rel="nofollow noopener noreferrer" target="_blank">#Signature</a> <a href="https://social.mikala.one/tags/Hacking" rel="nofollow noopener noreferrer" target="_blank">#Hacking</a> <a href="https://social.mikala.one/tags/Crypto" rel="nofollow noopener noreferrer" target="_blank">#Crypto</a> <a href="https://social.mikala.one/tags/Security" rel="nofollow noopener noreferrer" target="_blank">#Security</a> <a href="https://social.mikala.one/tags/Hacker" rel="nofollow noopener noreferrer" target="_blank">#Hacker</a> <a href="https://social.mikala.one/tags/Vendor" rel="nofollow noopener noreferrer" target="_blank">#Vendor</a> <a href="https://social.mikala.one/tags/Fix" rel="nofollow noopener noreferrer" target="_blank">#Fix</a> <a href="https://social.mikala.one/tags/Response" rel="nofollow noopener noreferrer" target="_blank">#Response</a><p></p></span></div></div></article><article aria-posinset="11" aria-setsize="20" data-id="112922181649092340" tabindex="-1" style="height: 196.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>Nordnick :verified:</span><span><p><span class="h-card" translate="no"><a href="https://social.growyourown.services/@FediTips" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>FediTips</span></a></span> </p><p>... and you could use the <a href="https://norden.social/tags/Mastodon" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Mastodon</span></a> client <a href="https://norden.social/tags/API" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>API</span></a> to create your own approach, if you want so... ;-)</p></span></div></div></article><article aria-posinset="12" aria-setsize="20" data-id="112920544971429278" tabindex="-1" style="height: 476.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>Gea-Suan Lin</span><span><p>OpenAI 現在可以輸出定義的 JSON 了</p><p>OpenAI 在「Introducing Structured Outputs in the API」這邊提到目前的 JSON mode 不能保證 schema 的正確性:</p><p>While JSON mode improves model reliability for genera</p><p><a href="https://blog.gslin.org/archives/2024/08/07/11924/openai-%e7%8f%be%e5%9c%a8%e5%8f%af%e4%bb%a5%e8%bc%b8%e5%87%ba%e5%ae%9a%e7%be%a9%e7%9a%84-json-%e4%ba%86/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">blog.gslin.org/archives/2024/0</span><span class="invisible">8/07/11924/openai-%e7%8f%be%e5%9c%a8%e5%8f%af%e4%bb%a5%e8%bc%b8%e5%87%ba%e5%ae%9a%e7%be%a9%e7%9a%84-json-%e4%ba%86/</span></a></p><p><a href="https://abpe.org/tags/API" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>API</span></a> <a href="https://abpe.org/tags/Computer" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Computer</span></a> <a href="https://abpe.org/tags/Murmuring" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Murmuring</span></a> <a href="https://abpe.org/tags/Network" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Network</span></a> <a href="https://abpe.org/tags/Programming" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Programming</span></a> <a href="https://abpe.org/tags/Service" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Service</span></a> <a href="https://abpe.org/tags/ai" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ai</span></a> <a href="https://abpe.org/tags/api" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>api</span></a> <a href="https://abpe.org/tags/gpt" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>gpt</span></a> <a href="https://abpe.org/tags/json" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>json</span></a> <a href="https://abpe.org/tags/learning" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>learning</span></a> <a href="https://abpe.org/tags/llm" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>llm</span></a> <a href="https://abpe.org/tags/machine" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>machine</span></a> <a href="https://abpe.org/tags/ml" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ml</span></a> <a href="https://abpe.org/tags/model" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>model</span></a> <a href="https://abpe.org/tags/network" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>network</span></a> <a href="https://abpe.org/tags/neural" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>neural</span></a> <a href="https://abpe.org/tags/openai" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>openai</span></a> <a href="https://abpe.org/tags/schema" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>schema</span></a></p></span></div></div></article><article aria-posinset="13" aria-setsize="20" data-id="112730953411807846" tabindex="-1" style="height: 432.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>Gea-Suan Lin</span><span><p>使用 SQLite 實作出 API 相容 Amazon SQS 的 SmoothMQ</p><p>在「Show HN: Drop-in SQS replacement based on SQLite (github.com/poundifdef)」這邊看到的,就如同標題所提到的,是個 Amazon S</p><p><a href="https://blog.gslin.org/archives/2024/07/05/11870/%e4%bd%bf%e7%94%a8-sqlite-%e5%af%a6%e4%bd%9c%e5%87%ba-api-%e7%9b%b8%e5%ae%b9-amazon-sqs-%e7%9a%84-smoothmq/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">blog.gslin.org/archives/2024/0</span><span class="invisible">7/05/11870/%e4%bd%bf%e7%94%a8-sqlite-%e5%af%a6%e4%bd%9c%e5%87%ba-api-%e7%9b%b8%e5%ae%b9-amazon-sqs-%e7%9a%84-smoothmq/</span></a></p><p><a href="https://abpe.org/tags/API" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>API</span></a> <a href="https://abpe.org/tags/AWS" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>AWS</span></a> <a href="https://abpe.org/tags/Cloud" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Cloud</span></a> <a href="https://abpe.org/tags/Computer" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Computer</span></a> <a href="https://abpe.org/tags/Infrastructure" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Infrastructure</span></a> <a href="https://abpe.org/tags/Murmuring" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Murmuring</span></a> <a href="https://abpe.org/tags/Network" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Network</span></a> <a href="https://abpe.org/tags/Service" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Service</span></a> <a href="https://abpe.org/tags/Software" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Software</span></a> <a href="https://abpe.org/tags/amazon" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>amazon</span></a> <a href="https://abpe.org/tags/api" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>api</span></a> <a href="https://abpe.org/tags/aws" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>aws</span></a> <a href="https://abpe.org/tags/cloud" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>cloud</span></a> <a href="https://abpe.org/tags/message" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>message</span></a> <a href="https://abpe.org/tags/queue" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>queue</span></a> <a href="https://abpe.org/tags/replacement" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>replacement</span></a> <a href="https://abpe.org/tags/service" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>service</span></a> <a href="https://abpe.org/tags/smoothmq" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>smoothmq</span></a> <a href="https://abpe.org/tags/sqlite" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>sqlite</span></a> <a href="https://abpe.org/tags/sqs" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>sqs</span></a></p></span></div></div></article><article aria-posinset="14" aria-setsize="20" data-id="112537265250826682" tabindex="-1" style="height: 296.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>Gea-Suan Lin</span><span><p>Google 承認搜尋引擎內部 API 文件洩漏了?</p><p>前幾天很熱門的「An Anonymous Source Shared Thousands of Leaked Google Search API Documents with Me; Everyone in SEO Should See Them」</p><p><a href="https://blog.gslin.org/archives/2024/06/01/11826/google-%e6%89%bf%e8%aa%8d%e6%90%9c%e5%b0%8b%e5%bc%95%e6%93%8e%e5%85%a7%e9%83%a8-api-%e6%96%87%e4%bb%b6%e6%b4%a9%e6%bc%8f%e4%ba%86%ef%bc%9f/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">blog.gslin.org/archives/2024/0</span><span class="invisible">6/01/11826/google-%e6%89%bf%e8%aa%8d%e6%90%9c%e5%b0%8b%e5%bc%95%e6%93%8e%e5%85%a7%e9%83%a8-api-%e6%96%87%e4%bb%b6%e6%b4%a9%e6%bc%8f%e4%ba%86%ef%bc%9f/</span></a></p><p><a href="https://abpe.org/tags/API" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>API</span></a> <a href="https://abpe.org/tags/Computer" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Computer</span></a> <a href="https://abpe.org/tags/Murmuring" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Murmuring</span></a> <a href="https://abpe.org/tags/Network" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Network</span></a> <a href="https://abpe.org/tags/SearchEngine" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>SearchEngine</span></a> <a href="https://abpe.org/tags/api" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>api</span></a> <a href="https://abpe.org/tags/document" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>document</span></a> <a href="https://abpe.org/tags/documentation" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>documentation</span></a> <a href="https://abpe.org/tags/engine" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>engine</span></a> <a href="https://abpe.org/tags/google" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>google</span></a> <a href="https://abpe.org/tags/internal" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>internal</span></a> <a href="https://abpe.org/tags/search" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>search</span></a> <a href="https://abpe.org/tags/seo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>seo</span></a></p></span></div></div></article><article aria-posinset="15" aria-setsize="20" data-id="112520801943940556" tabindex="-1" style="height: 564.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>Gea-Suan Lin</span><span><p>API 不該自動 HTTP 轉到 HTTPS</p><p>在「API Shouldn't Redirect HTTP to HTTPS (jviide.iki.fi)」這邊看到的,原始文章在「Your API Shouldn't Redirect HTTP to HTTPS」這邊。</p><p>仔細想一下沒錯,API 應該要一開始就被正確設定,所以要 fail fast。</p><p>另外在 id=40505525 這邊還提到了透過 HTTP 的 token 會自動被 revoke 掉,這個作法也很漂亮:</p><p>The Sta</p><p><a href="https://blog.gslin.org/archives/2024/05/29/11821/api-%e4%b8%8d%e8%a9%b2%e8%87%aa%e5%8b%95-http-%e8%bd%89%e5%88%b0-https/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">blog.gslin.org/archives/2024/0</span><span class="invisible">5/29/11821/api-%e4%b8%8d%e8%a9%b2%e8%87%aa%e5%8b%95-http-%e8%bd%89%e5%88%b0-https/</span></a></p><p><a href="https://abpe.org/tags/API" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>API</span></a> <a href="https://abpe.org/tags/Computer" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Computer</span></a> <a href="https://abpe.org/tags/Murmuring" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Murmuring</span></a> <a href="https://abpe.org/tags/Network" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Network</span></a> <a href="https://abpe.org/tags/Security" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Security</span></a> <a href="https://abpe.org/tags/Service" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Service</span></a> <a href="https://abpe.org/tags/api" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>api</span></a> <a href="https://abpe.org/tags/http" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>http</span></a> <a href="https://abpe.org/tags/https" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>https</span></a> <a href="https://abpe.org/tags/redirect" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>redirect</span></a> <a href="https://abpe.org/tags/security" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>security</span></a> <a href="https://abpe.org/tags/token" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>token</span></a></p></span></div></div></article><article aria-posinset="16" aria-setsize="20" data-id="112426736974000467" tabindex="-1" style="height: 674.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>Gea-Suan Lin</span><span><p>Popover API</p><p>看到「Popover API (developer.mozilla.org)」這個討論,引用的資料是 MDN 上面的「Popover API」,從名字也可以看出來與 pop over 有關 (話說查單字發現 popover 這個詞在字典裡居然是泡芙,英文維基百科上的 Popover 也可以看到...)。</p><p>Anyway,馬上有想到的是 modal 類的操作,在 MDN 上面的文件裡面有範例,可以用純 HTML 的方式操作:</p><p>Toggle the popover<br>Popover content</p><p>效果就是在畫面正中央出現,預設有 border。</p><p>另外也可以透過 JavaScrip</p><p><a href="https://blog.gslin.org/archives/2024/05/12/11792/popover-api/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">blog.gslin.org/archives/2024/0</span><span class="invisible">5/12/11792/popover-api/</span></a></p><p><a href="https://abpe.org/tags/Browser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Browser</span></a> <a href="https://abpe.org/tags/Computer" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Computer</span></a> <a href="https://abpe.org/tags/Murmuring" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Murmuring</span></a> <a href="https://abpe.org/tags/Network" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Network</span></a> <a href="https://abpe.org/tags/Programming" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Programming</span></a> <a href="https://abpe.org/tags/Software" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Software</span></a> <a href="https://abpe.org/tags/WWW" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>WWW</span></a> <a href="https://abpe.org/tags/api" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>api</span></a> <a href="https://abpe.org/tags/html" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>html</span></a> <a href="https://abpe.org/tags/modal" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>modal</span></a> <a href="https://abpe.org/tags/popover" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>popover</span></a> <a href="https://abpe.org/tags/standard" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>standard</span></a> <a href="https://abpe.org/tags/web" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>web</span></a></p></span></div></div></article><article aria-posinset="17" aria-setsize="20" data-id="112078070762954068" tabindex="-1" style="height: 498.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>Gea-Suan Lin</span><span><p>Web Audio API 當做 fingerprint 的方式</p><p>三年前的文章「How the Web Audio API is used for audio fingerprinting」講解了 AudioContext 是怎麼被拿來 fingerprint 的,最近在「How We Bypassed Safari 17's Advanced Audio Fingerprinting Protection」這篇看到的。</p><p>AudioContext 可以完全跟錄音設備無關,單</p><p><a href="https://blog.gslin.org/archives/2024/03/12/11693/web-audio-api-%e7%95%b6%e5%81%9a-fingerprint-%e7%9a%84%e6%96%b9%e5%bc%8f/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">blog.gslin.org/archives/2024/0</span><span class="invisible">3/12/11693/web-audio-api-%e7%95%b6%e5%81%9a-fingerprint-%e7%9a%84%e6%96%b9%e5%bc%8f/</span></a></p><p><a href="https://abpe.org/tags/Browser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Browser</span></a> <a href="https://abpe.org/tags/Computer" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Computer</span></a> <a href="https://abpe.org/tags/Murmuring" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Murmuring</span></a> <a href="https://abpe.org/tags/Network" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Network</span></a> <a href="https://abpe.org/tags/Privacy" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Privacy</span></a> <a href="https://abpe.org/tags/Software" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Software</span></a> <a href="https://abpe.org/tags/WWW" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>WWW</span></a> <a href="https://abpe.org/tags/api" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>api</span></a> <a href="https://abpe.org/tags/audio" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>audio</span></a> <a href="https://abpe.org/tags/browser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>browser</span></a> <a href="https://abpe.org/tags/fingerprint" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>fingerprint</span></a> <a href="https://abpe.org/tags/privacy" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>privacy</span></a> <a href="https://abpe.org/tags/web" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>web</span></a></p></span></div></div></article><article aria-posinset="18" aria-setsize="20" data-id="111999202635081140" tabindex="-1" style="height: 432.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>Gea-Suan Lin</span><span><p>找出任意 S3 bucket 對應的 AWS Account ID</p><p>在 Hacker News 上看到「How to find the AWS account ID of any S3 bucket (tracebit.com)」這篇,作者利用不同的額外條件,讓 S3 bucket 產生不同的 res</p><p><a href="https://blog.gslin.org/archives/2024/02/27/11680/%e6%89%be%e5%87%ba%e4%bb%bb%e6%84%8f-s3-bucket-%e5%b0%8d%e6%87%89%e7%9a%84-aws-account-id/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">blog.gslin.org/archives/2024/0</span><span class="invisible">2/27/11680/%e6%89%be%e5%87%ba%e4%bb%bb%e6%84%8f-s3-bucket-%e5%b0%8d%e6%87%89%e7%9a%84-aws-account-id/</span></a></p><p><a href="https://abpe.org/tags/API" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>API</span></a> <a href="https://abpe.org/tags/AWS" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>AWS</span></a> <a href="https://abpe.org/tags/Cloud" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Cloud</span></a> <a href="https://abpe.org/tags/Computer" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Computer</span></a> <a href="https://abpe.org/tags/Murmuring" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Murmuring</span></a> <a href="https://abpe.org/tags/Network" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Network</span></a> <a href="https://abpe.org/tags/Security" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Security</span></a> <a href="https://abpe.org/tags/Service" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Service</span></a> <a href="https://abpe.org/tags/account" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>account</span></a> <a href="https://abpe.org/tags/amazon" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>amazon</span></a> <a href="https://abpe.org/tags/api" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>api</span></a> <a href="https://abpe.org/tags/aws" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>aws</span></a> <a href="https://abpe.org/tags/bucket" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>bucket</span></a> <a href="https://abpe.org/tags/cloud" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>cloud</span></a> <a href="https://abpe.org/tags/cloudtrail" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>cloudtrail</span></a> <a href="https://abpe.org/tags/data" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>data</span></a> <a href="https://abpe.org/tags/endpoint" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>endpoint</span></a> <a href="https://abpe.org/tags/id" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>id</span></a> <a href="https://abpe.org/tags/log" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>log</span></a> <a href="https://abpe.org/tags/policy" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>policy</span></a> <a href="https://abpe.org/tags/s3" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>s3</span></a> <a href="https://abpe.org/tags/security" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>security</span></a> <a href="https://abpe.org/tags/service" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>service</span></a> <a href="https://abpe.org/tags/vpc" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>vpc</span></a></p></span></div></div></article><article aria-posinset="19" aria-setsize="20" data-id="111892009702713338" tabindex="-1" style="height: 476.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>Gea-Suan Lin</span><span><p>IFTTT 將原本的 Legacy Pro 漲價一倍</p><p>收到 IFTTT 的通知信件,本來的 Legacy Pro (US$1.99/mo) 要變成 Pro+ 變成 US$3.99/mo:</p><p>翻了一下 Hacker News,看起來前幾天有提到:「IFTTT is killing its pay-what-you-want Legacy Pro plan (2023) (techhive.com)」,原文看起來是去年六月的文章:「IFTTT is killing its pay-wha</p><p><a href="https://blog.gslin.org/archives/2024/02/08/11645/ifttt-%e5%b0%87%e5%8e%9f%e6%9c%ac%e7%9a%84-legacy-pro-%e6%bc%b2%e5%83%b9%e4%b8%80%e5%80%8d/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">blog.gslin.org/archives/2024/0</span><span class="invisible">2/08/11645/ifttt-%e5%b0%87%e5%8e%9f%e6%9c%ac%e7%9a%84-legacy-pro-%e6%bc%b2%e5%83%b9%e4%b8%80%e5%80%8d/</span></a></p><p><a href="https://abpe.org/tags/API" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>API</span></a> <a href="https://abpe.org/tags/Computer" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Computer</span></a> <a href="https://abpe.org/tags/Murmuring" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Murmuring</span></a> <a href="https://abpe.org/tags/Network" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Network</span></a> <a href="https://abpe.org/tags/Service" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Service</span></a> <a href="https://abpe.org/tags/cost" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>cost</span></a> <a href="https://abpe.org/tags/ifttt" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ifttt</span></a> <a href="https://abpe.org/tags/legacy" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>legacy</span></a> <a href="https://abpe.org/tags/pricing" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>pricing</span></a> <a href="https://abpe.org/tags/pro" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>pro</span></a></p></span></div></div></article><article aria-posinset="20" aria-setsize="20" data-id="111608499240108493" tabindex="-1" style="height: 442.141px; opacity: 0; overflow: hidden;"><div tabindex="-1"><div class="status__wrapper focusable" tabindex="0"><span>Matthew Reinbold</span><span><p>What happens when <a href="https://opinuendo.com/tags/API" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>API</span></a> platform <a href="https://opinuendo.com/tags/enshittification" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>enshittification</span></a> meets the common, everyday garage door opener? And what does <a href="https://opinuendo.com/tags/TaylorSwift" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>TaylorSwift</span></a> have to do with it? </p><p>In the latest Net API Notes, I find out.</p><p>This one was a lot of fun to write (and rewrite, and rewrite - the final version has nearly 600 words shaved from the initial 1st draft vomit):<br><a href="https://netapinotes.substack.com/p/your-garages-api-platform-hidden" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">netapinotes.substack.com/p/you</span><span class="invisible">r-garages-api-platform-hidden</span></a></p></span></div></div></article><button type="button" class="load-more" style="visibility: visible;"><span>載入更多</span></button></div></div></div></div></div><div class="columns-area__panels__pane columns-area__panels__pane--start columns-area__panels__pane--navigational"><div class="columns-area__panels__pane__inner"><div class="navigation-panel"><div class="navigation-panel__logo"><a class="column-link column-link--logo" href="/"><svg viewBox="0 0 261 66" class="logo logo--wordmark" role="img"><title>Mastodon</title><use xlink:href="#logo-symbol-wordmark"></use></svg></a><hr></div><a class="column-link column-link--transparent" title="探索" href="/explore"><i class="fa fa-hashtag column-link__icon fa-fw"></i><span>探索</span></a><a class="column-link column-link--transparent" title="即時內容" href="/public/local"><i class="fa fa-globe column-link__icon fa-fw"></i><span>即時內容</span></a><div class="navigation-panel__sign-in-banner"><hr><div class="sign-in-banner"><p><span>登入以跟隨個人檔案和主題標籤,或收藏、分享和回覆嘟文。您也可以使用您的帳號在其他伺服器上進行互動。</span></p><a href="/auth/sign_up" class="button button--block"><span>新增帳號</span></a><a href="/auth/sign_in" class="button button--block button-tertiary"><span>登入</span></a></div></div><div class="navigation-panel__legal"><hr><a class="column-link column-link--transparent" title="關於" href="/about"><i class="fa fa-ellipsis-h column-link__icon fa-fw"></i><span>關於</span></a></div></div></div></div></div><div class="notification-list"></div><div style=""></div><div class="modal-root" style="opacity: 0;"></div><div class="upload-area" style="visibility: hidden; opacity: 0;"><div class="upload-area__drop"><div class="upload-area__background" style="transform: scale(0.95);"></div><div class="upload-area__content"><span>拖放來上傳</span></div></div></div></div></div></div>
<div aria-hidden="" class="logo-resources" inert="" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="79" height="79" viewBox="0 0 79 75"><symbol id="logo-symbol-icon"><path d="M74.7135 16.6043C73.6199 8.54587 66.5351 2.19527 58.1366 0.964691C56.7196 0.756754 51.351 0 38.9148 0H38.822C26.3824 0 23.7135 0.756754 22.2966 0.964691C14.1319 2.16118 6.67571 7.86752 4.86669 16.0214C3.99657 20.0369 3.90371 24.4888 4.06535 28.5726C4.29578 34.4289 4.34049 40.275 4.877 46.1075C5.24791 49.9817 5.89495 53.8251 6.81328 57.6088C8.53288 64.5968 15.4938 70.4122 22.3138 72.7848C29.6155 75.259 37.468 75.6697 44.9919 73.971C45.8196 73.7801 46.6381 73.5586 47.4475 73.3063C49.2737 72.7302 51.4164 72.086 52.9915 70.9542C53.0131 70.9384 53.0308 70.9178 53.0433 70.8942C53.0558 70.8706 53.0628 70.8445 53.0637 70.8179V65.1661C53.0634 65.1412 53.0574 65.1167 53.0462 65.0944C53.035 65.0721 53.0189 65.0525 52.9992 65.0371C52.9794 65.0218 52.9564 65.011 52.9318 65.0056C52.9073 65.0002 52.8819 65.0003 52.8574 65.0059C48.0369 66.1472 43.0971 66.7193 38.141 66.7103C29.6118 66.7103 27.3178 62.6981 26.6609 61.0278C26.1329 59.5842 25.7976 58.0784 25.6636 56.5486C25.6622 56.5229 25.667 56.4973 25.6775 56.4738C25.688 56.4502 25.7039 56.4295 25.724 56.4132C25.7441 56.397 25.7678 56.3856 25.7931 56.3801C25.8185 56.3746 25.8448 56.3751 25.8699 56.3816C30.6101 57.5151 35.4693 58.0873 40.3455 58.086C41.5183 58.086 42.6876 58.086 43.8604 58.0553C48.7647 57.919 53.9339 57.6701 58.7591 56.7361C58.8794 56.7123 58.9998 56.6918 59.103 56.6611C66.7139 55.2124 73.9569 50.665 74.6929 39.1501C74.7204 38.6967 74.7892 34.4016 74.7892 33.9312C74.7926 32.3325 75.3085 22.5901 74.7135 16.6043ZM62.9996 45.3371H54.9966V25.9069C54.9966 21.8163 53.277 19.7302 49.7793 19.7302C45.9343 19.7302 44.0083 22.1981 44.0083 27.0727V37.7082H36.0534V27.0727C36.0534 22.1981 34.124 19.7302 30.279 19.7302C26.8019 19.7302 25.0651 21.8163 25.0617 25.9069V45.3371H17.0656V25.3172C17.0656 21.2266 18.1191 17.9769 20.2262 15.568C22.3998 13.1648 25.2509 11.9308 28.7898 11.9308C32.8859 11.9308 35.9812 13.492 38.0447 16.6111L40.036 19.9245L42.0308 16.6111C44.0943 13.492 47.1896 11.9308 51.2788 11.9308C54.8143 11.9308 57.6654 13.1648 59.8459 15.568C61.9529 17.9746 63.0065 21.2243 63.0065 25.3172L62.9996 45.3371Z" fill="currentColor"></path></symbol><use xlink:href="#logo-symbol-icon"></use></svg>
<svg width="261" height="66" viewBox="0 0 261 66" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<symbol id="logo-symbol-wordmark"><path d="M60.7539 14.4034C59.8143 7.41942 53.7273 1.91557 46.5117 0.849066C45.2943 0.668854 40.6819 0.0130005 29.9973 0.0130005H29.9175C19.2299 0.0130005 16.937 0.668854 15.7196 0.849066C8.70488 1.88602 2.29885 6.83152 0.744617 13.8982C-0.00294988 17.3784 -0.0827298 21.2367 0.0561464 24.7759C0.254119 29.8514 0.292531 34.918 0.753482 39.9728C1.07215 43.3305 1.62806 46.6614 2.41704 49.9406C3.89445 55.9969 9.87499 61.0369 15.7344 63.0931C22.0077 65.2374 28.7542 65.5934 35.2184 64.1212C35.9295 63.9558 36.6318 63.7638 37.3252 63.5451C38.8971 63.0459 40.738 62.4875 42.0913 61.5067C42.1099 61.4929 42.1251 61.4751 42.1358 61.4547C42.1466 61.4342 42.1526 61.4116 42.1534 61.3885V56.4903C42.153 56.4687 42.1479 56.4475 42.1383 56.4281C42.1287 56.4088 42.1149 56.3918 42.0979 56.3785C42.0809 56.3652 42.0611 56.3559 42.04 56.3512C42.019 56.3465 41.9971 56.3466 41.9761 56.3514C37.8345 57.3406 33.5905 57.8364 29.3324 57.8286C22.0045 57.8286 20.0336 54.3514 19.4693 52.9038C19.0156 51.6527 18.7275 50.3476 18.6124 49.0218C18.6112 48.9996 18.6153 48.9773 18.6243 48.9569C18.6333 48.9366 18.647 48.9186 18.6643 48.9045C18.6816 48.8904 18.7019 48.8805 18.7237 48.8758C18.7455 48.871 18.7681 48.8715 18.7897 48.8771C22.8622 49.8595 27.037 50.3553 31.2265 50.3542C32.234 50.3542 33.2387 50.3542 34.2463 50.3276C38.4598 50.2094 42.9009 49.9938 47.0465 49.1843C47.1499 49.1636 47.2534 49.1459 47.342 49.1193C53.881 47.8637 60.1038 43.9227 60.7362 33.9431C60.7598 33.5502 60.8189 29.8278 60.8189 29.4201C60.8218 28.0345 61.2651 19.5911 60.7539 14.4034Z" fill="url(#paint0_linear_89_11)"></path>
<path d="M12.3442 18.3034C12.3442 16.2668 13.9777 14.6194 15.997 14.6194C18.0163 14.6194 19.6497 16.2668 19.6497 18.3034C19.6497 20.34 18.0163 21.9874 15.997 21.9874C13.9777 21.9874 12.3442 20.34 12.3442 18.3034Z" fill="currentColor"></path>
<path d="M66.1484 21.4685V38.3839H59.4988V21.9744C59.4988 18.5109 58.0583 16.7597 55.1643 16.7597C51.9746 16.7597 50.3668 18.8482 50.3668 22.9603V31.9499H43.7687V22.9603C43.7687 18.8352 42.1738 16.7597 38.9712 16.7597C36.0901 16.7597 34.6367 18.5109 34.6367 21.9744V38.3839H28V21.4685C28 18.018 28.8746 15.268 30.6238 13.2314C32.4374 11.1948 34.8039 10.157 37.7365 10.157C41.132 10.157 43.7172 11.4802 45.415 14.1135L47.0742 16.9154L48.7334 14.1135C50.4311 11.4802 53.0035 10.157 56.4119 10.157C59.3444 10.157 61.711 11.1948 63.5246 13.2314C65.2738 15.268 66.1484 18.005 66.1484 21.4685ZM89.0297 29.8743C90.4059 28.4085 91.0619 26.5795 91.0619 24.3613C91.0619 22.1431 90.4059 20.3011 89.0297 18.9001C87.7049 17.4343 86.0329 16.7338 84.0007 16.7338C81.9685 16.7338 80.2965 17.4343 78.9717 18.9001C77.6469 20.3011 76.991 22.1431 76.991 24.3613C76.991 26.5795 77.6469 28.4215 78.9717 29.8743C80.2965 31.2753 81.9685 31.9888 84.0007 31.9888C86.0329 31.9888 87.7049 31.2883 89.0297 29.8743ZM91.0619 10.8316H97.6086V37.891H91.0619V34.6999C89.0811 37.3462 86.3416 38.6563 82.7788 38.6563C79.2161 38.6563 76.4765 37.3073 74.0456 34.5442C71.6533 31.7812 70.4443 28.3696 70.4443 24.3743C70.4443 20.3789 71.6661 17.0192 74.0456 14.2561C76.4893 11.4931 79.3833 10.0922 82.7788 10.0922C86.1744 10.0922 89.0811 11.3894 91.0619 14.0356V10.8445V10.8316ZM119.654 23.8683C121.583 25.3342 122.548 27.3837 122.496 29.9781C122.496 32.7411 121.532 34.9075 119.551 36.4122C117.57 37.878 115.178 38.6304 112.284 38.6304C107.049 38.6304 103.499 36.4641 101.621 32.1963L107.306 28.7847C108.065 31.1067 109.737 32.3001 112.284 32.3001C114.625 32.3001 115.782 31.5477 115.782 29.9781C115.782 28.8366 114.265 27.8118 111.165 27.0075C109.995 26.6833 109.03 26.359 108.271 26.0865C107.204 25.6585 106.29 25.1655 105.532 24.5688C103.654 23.103 102.689 21.1572 102.689 18.6666C102.689 16.0203 103.602 13.9059 105.429 12.3882C107.306 10.8186 109.596 10.0662 112.335 10.0662C116.709 10.0662 119.898 11.9601 121.982 15.7998L116.4 19.0428C115.59 17.2008 114.213 16.2798 112.335 16.2798C110.355 16.2798 109.39 17.0321 109.39 18.498C109.39 19.6395 110.908 20.6643 114.008 21.4685C116.4 22.0134 118.278 22.8176 119.641 23.8554L119.654 23.8683ZM140.477 17.538H134.741V28.7977C134.741 30.1468 135.255 30.964 136.22 31.3402C136.927 31.6126 138.355 31.6645 140.49 31.5607V37.891C136.079 38.4358 132.876 37.9948 130.998 36.5419C129.12 35.1409 128.207 32.5336 128.207 28.8106V17.538H123.795V10.8316H128.207V5.37038L134.754 3.25595V10.8316H140.49V17.538H140.477ZM161.352 29.7187C162.677 28.3177 163.333 26.5276 163.333 24.3613C163.333 22.195 162.677 20.4178 161.352 19.0039C160.027 17.6029 158.407 16.8894 156.426 16.8894C154.445 16.8894 152.825 17.5899 151.5 19.0039C150.227 20.4697 149.571 22.2469 149.571 24.3613C149.571 26.4757 150.227 28.2529 151.5 29.7187C152.825 31.1196 154.445 31.8331 156.426 31.8331C158.407 31.8331 160.027 31.1326 161.352 29.7187ZM146.883 34.5313C144.297 31.7682 143.024 28.4215 143.024 24.3613C143.024 20.3011 144.297 17.0062 146.883 14.2432C149.468 11.4802 152.67 10.0792 156.426 10.0792C160.182 10.0792 163.384 11.4802 165.97 14.2432C168.555 17.0062 169.88 20.4178 169.88 24.3613C169.88 28.3047 168.555 31.7682 165.97 34.5313C163.384 37.2943 160.233 38.6434 156.426 38.6434C152.619 38.6434 149.468 37.2943 146.883 34.5313ZM191.771 29.8743C193.095 28.4085 193.751 26.5795 193.751 24.3613C193.751 22.1431 193.095 20.3011 191.771 18.9001C190.446 17.4343 188.774 16.7338 186.742 16.7338C184.709 16.7338 183.037 17.4343 181.661 18.9001C180.336 20.3011 179.68 22.1431 179.68 24.3613C179.68 26.5795 180.336 28.4215 181.661 29.8743C183.037 31.2753 184.761 31.9888 186.742 31.9888C188.722 31.9888 190.446 31.2883 191.771 29.8743ZM193.751 0H200.298V37.891H193.751V34.6999C191.822 37.3462 189.082 38.6563 185.52 38.6563C181.957 38.6563 179.179 37.3073 176.735 34.5442C174.343 31.7812 173.134 28.3696 173.134 24.3743C173.134 20.3789 174.356 17.0192 176.735 14.2561C179.166 11.4931 182.111 10.0922 185.52 10.0922C188.928 10.0922 191.822 11.3894 193.751 14.0356V0.0129719V0ZM223.308 29.7057C224.633 28.3047 225.289 26.5146 225.289 24.3483C225.289 22.182 224.633 20.4048 223.308 18.9909C221.983 17.5899 220.363 16.8765 218.382 16.8765C216.401 16.8765 214.78 17.577 213.456 18.9909C212.182 20.4567 211.526 22.2339 211.526 24.3483C211.526 26.4627 212.182 28.2399 213.456 29.7057C214.78 31.1067 216.401 31.8201 218.382 31.8201C220.363 31.8201 221.983 31.1196 223.308 29.7057ZM208.838 34.5183C206.253 31.7553 204.98 28.4085 204.98 24.3483C204.98 20.2881 206.253 16.9932 208.838 14.2302C211.424 11.4672 214.626 10.0662 218.382 10.0662C222.137 10.0662 225.34 11.4672 227.925 14.2302C230.511 16.9932 231.835 20.4048 231.835 24.3483C231.835 28.2918 230.511 31.7553 227.925 34.5183C225.34 37.2813 222.189 38.6304 218.382 38.6304C214.575 38.6304 211.424 37.2813 208.838 34.5183ZM260.17 21.261V37.878H253.623V22.1301C253.623 20.34 253.173 18.9909 252.247 17.9661C251.385 17.0451 250.164 16.5651 248.594 16.5651C244.89 16.5651 243.012 18.7833 243.012 23.2716V37.878H236.466V10.8316H243.012V13.867C244.581 11.3245 247.077 10.0792 250.575 10.0792C253.366 10.0792 255.656 11.0521 257.431 13.0498C259.257 15.0474 260.17 17.7586 260.17 21.274" fill="currentColor"></path>
<defs>
<linearGradient id="paint0_linear_89_11" x1="30.5" y1="0.0130005" x2="30.5" y2="65.013" gradientUnits="userSpaceOnUse">
<stop stop-color="#6364FF"></stop>
<stop offset="1" stop-color="#563ACC"></stop>
</linearGradient>
</defs></symbol><use xlink:href="#logo-symbol-wordmark"></use>
</svg>
</div>
<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8ea2ebb6ef15383f',t:'MTczMjg4NjY5NS4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script><iframe height="1" width="1" style="position: absolute; top: 0px; left: 0px; border: none; visibility: hidden;"></iframe><script defer="" src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"rayId":"8ea2ebb6ef15383f","version":"2024.10.5","r":1,"serverTiming":{"name":{"cfExtPri":true,"cfL4":true,"cfSpeedBrain":true,"cfCacheStatus":true}},"token":"4f81f85954aa4b059303af3582bc27e1","b":1}" crossorigin="anonymous"></script>
</body></html>