Is 笔笔·bilibili视频批量下载助手 safe?
The extension sends the host and full URL of every page you visit to huoxiaqu.com.
A content script runs on all websites and reports each page's host and full URL to huoxiaqu.com, along with a persistent user ID and session ID. This is in addition to its stated purpose of batch-downloading bilibili videos.
Who publishes itDo It - 7 other listings from the same operator, 6 of them carrying a finding
Do It - 7 other listings from the same operator, 6 of them carrying a finding
What this publisher told the store about itself, and the other listings that told it the same thing.
Same store account
7 other listings published from this account, 862 users between them. 6 of them carry a finding.
Shared hosts - 2 hostnames
Hostnames hardcoded in this extension that few other listings call. That can mean one operator behind both, and it can equally mean a small shared vendor, so it is context rather than a conclusion. Hosts that many listings call are left out: they are services, not connections.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
Bilibili downloader reports every page you visit on any site to huoxiaqu.com
Code analysis shows a content script on all sites sends each page's host and full URL, with a persistent user ID and session ID, to huoxiaqu.com, although the downloader only needs bilibili.com.
- Severity
- High unwanted
- Type
- Unexpected
- CWE
- CWE-359
- Source
- Static analysis
You load any web page, on any site.
No bilibili.com page is required.
The extension sends that page's host and full URL to huoxiaqu.com.
The request carries a stored user ID and session ID.
Content script and background handler
Content script
js/content.jschrome.runtime.sendMessage({type:"recordVisitor",fromChannel:"content",host:window.location.host,url:window.location.href});Background handler
js/background.jsfunction v(e = "popup", r, o) { chrome.storage.local.get(["userId", "sessionId", "paidUsers"], function(s) { s.sessionId || (s.sessionId = Math.random().toString(36).substr(2, 10), chrome.storage.local.set({ sessionId: s.sessionId })), u.recordVisitor({ userId: s.userId, fromChannel: e, sessionId: s.sessionId, host: r, url: o, paidUsers: s.paidUsers }).catch(a => console.log("Error:", a)) })}Request wrapper
assets/request-D90E6teb.jsrecordVisitor: async r => { const e = await o("/api/visitor/visitorRecord", { method: "POST", body: r }); return e && typeof e == "object" && "error" in e, e}- Page URLhttps://www.example.com/account/orders?id=48213#details
The full address of the page you are on, including query string and fragment.
- Hostwww.example.com
The site you are visiting.
- User IDu_83f2a91c (illustrative)
A stored identifier that links visits to the same installation.
- Session IDk3j9x0a2bq (illustrative)
A random 10 character value generated once and reused.
- Channel and paid flagcontent
Source label (content) and the stored paid-user status.
- huoxiaqu.com
Receives the POST to /api/visitor/visitorRecord with plugCode and sessionId headers.
The downloader's host_permissions are limited to bilibili.com, but this content script is declared for all URLs, so the reporting reaches pages outside that scope.
Static analysis finding. This behaviour was identified by reading the shipped extension code and has not yet been reproduced in a live run. The trigger conditions and the exact data sent are read from the code, not from an observed capture.
What it can do
Permissions this extension asks for, as declared in version 1.0.3. 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 bilibili.com
*://*.bilibili.com/*
Store data in your browser
storage
Show a panel beside the page
sidePanel
Act on the current tab, but only after you click the extension
activeTab
Where it sends data
Destinations our analysis observed 笔笔·bilibili视频批量下载助手 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.
- huoxiaqu.com
笔笔·bilibili视频批量下载助手 sends data to huoxiaqu.com. 6 other extensions we have analysed send data here.