Is 写作猫浏览器插件 safe?
写作猫 captures text you type into editable fields on any site and sends it to xiezuocat.com a few seconds after you stop typing.
A content script runs on every page and watches editable fields; about three seconds after you pause typing, it sends both the rich HTML and plain text of what you wrote to xiezuocat.com for checking. Separate popup and toolbar features send the full HTML of the current page to metaso.cn, upload the page or a downloaded PDF to a WebDAV store at service.metapro.cn tagged with your account ID, and send screen-capture images to an OCR service at ocr_api_mt.metaso.cn over plain unencrypted HTTP.
Who publishes it上海秘塔网络科技有限公司 - 1 other listing from the same operator, none carrying a finding
上海秘塔网络科技有限公司 - 1 other listing from the same operator, none carrying a finding
What this publisher told the store about itself, and the other listings that told it the same thing.
Same store account
1 other listing published from this account, 10k+ users between them, none of them carrying a finding.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
Popup extract posts the current page HTML to Metaso
Code analysis shows clicking the popup extract button makes the extension request `document.documentElement.outerHTML` from the active tab and POST that markup to `https://metaso.cn/extract_html` with browser credentials included.
- Severity
- Medium unwanted
- Type
- Unexpected
- CWE
- CWE-200
- Source
- Dynamic sandbox
You click the extension's popup extract button.
The popup skips Chrome Web Store pages, then sends an extract command to the active tab.
The extension reads the active page's rendered HTML and posts it to Metaso.
The background extraction function wraps the HTML in a JSON `text` field and sends it with credentials included.
- Rendered page HTML<html><head><title>Quarterly roadmap</title></head><body><main>Launch plan draft</main></body></html> (illustrative)
The page structure and visible text the browser has rendered, including content from any article, document, dashboard, or form open.
- Document titleQuarterly roadmap (illustrative)
The title can reveal the page or document you were viewing when you used the extract action.
- Links in page markuphttps://intranet.example.com/roadmap/q3 (illustrative)
URLs embedded in the page can reveal sites, internal tools, or document links present in the current page.
Popup-to-content-script extraction path
Popup sends the extract command
js/popup.jsfunction d(e) { s({ event_name: "popupExtractButtonClick", text: "", value: 1 }), chrome.tabs.query({ active: !0, currentWindow: !0 }, function(t) { t[0].url.startsWith("https://chrome.google.com/webstore") ? f("该网页无法进行使用。", !1) : chrome.tabs.sendMessage(t[0].id, { cmd: "extract" }, function(t) { t && t.htmlText ? u.a.effect({ htmlText: t.htmlText, successFunc(t) { Object(c.d)(t.msg, { ai: e }) } }) : f("当前页面需要进行刷新。", !0) }) })}Content script returns full document HTML
js/content.jschrome.runtime.onMessage.addListener(function(A, E, B) { if ("extract" === A.cmd) { B({ htmlText: document.documentElement.outerHTML }) }})Background function that posts the HTML
function f(t, n) { let e = Object(r.a)(), i = new Headers; i.append("Content-Type", "application/json"), i = Object(u.a)(i); let o = new Request(e.uranusUrl + "/extract_html", { method: "POST", headers: i, mode: "cors", credentials: "include", body: JSON.stringify({ text: t }) }); fetch(o).then(t => { if (200 === t.status) return t.json().then(function(t) { n(t) }), {}; throw Error("Request rejected with status ".concat(t.status)) }).then(t => { e.blackList = t }).catch(t => { e.blackList = [] })}- metaso.cn
Receives the rendered HTML submitted by the popup extract action.
What it can do
Permissions this extension asks for, as declared in version 2.0.2. Asking for a permission is not a finding on its own - it is what the extension can do if it chooses to.
Read and change your data on every site you visit
<all_urls>
See the address and title of every tab you have open
tabs
Store data in your browser
storage
Read and change cookies, including the ones that keep you signed in
cookies
Write to your clipboard
clipboardWrite
Where it sends data
Destinations our analysis observed 写作猫 contacting. Sending data somewhere is not a finding on its own - an extension that syncs your settings has to talk to its own server - but it is where your data can go, and who else it goes to.
- metaso.cn
写作猫 sends data to metaso.cn. No other extension we have analysed sends data here.
- ocr_api_mt.metaso.cn
写作猫 sends data to ocr_api_mt.metaso.cn. No other extension we have analysed sends data here.
- service.metapro.cn
写作猫 sends data to service.metapro.cn. No other extension we have analysed sends data here.
- xiezuocat.com
写作猫 sends data to xiezuocat.com. No other extension we have analysed sends data here.