util.py 增加 code:
import io
def parse_netscape_cookies(cookie_data):
data_normalized = cookie_data.replace(' ', '\t')
file_like_object = io.StringIO(data_normalized)
cookies_list = []
FIELD_NAMES = [
"domain",
"subdomains",
"path",
"secure",
"expiration",
"name",
"value"
]
for line_number, line in enumerate(file_like_object, 1):
line = line.strip()
if not line or line.startswith('#'):
continue
parts = line.split()
# 預期會有 7 個欄位,如果分割結果不足 7 個,則表示解析錯誤或格式不完整
if len(parts) < 7:
print(f"\n[⚠️ 警告] 第 {line_number} 行格式不完整,跳過:{line}")
continue
cookie_fields = {
"Line": line_number,
FIELD_NAMES[0]: parts[0], # Domain
FIELD_NAMES[1]: to_bool(parts[1]), # Include Subdomains (Flag)
FIELD_NAMES[2]: parts[2], # Path
FIELD_NAMES[3]: to_bool(parts[3]), # Secure (Flag)
FIELD_NAMES[4]: int(parts[4]), # Expiration Timestamp
FIELD_NAMES[5]: parts[5], # Name
FIELD_NAMES[6]: parts[6], # Value
}
cookies_list.append(cookie_fields)
return cookies_list
還有這個小小副程式:
def to_bool(value):
"""將字串轉換為布林值。支援 'true', 'yes' (忽略大小寫)。"""
if not isinstance(value, str):
return False # 如果不是字串,直接返回 False
lower_value = value.lower()
return lower_value.startswith('true') or lower_value.startswith('yes')
欄位說明 (Netscape 格式)
解析出來的 7 個欄位意義如下:
- Domain (網域): 設定 Cookie 的目標網域。開頭有
.表示子網域也適用。 - Include Subdomains (Flag):
TRUE表示適用於所有子網域;FALSE表示僅適用於該網域。 - Path (路徑): Cookie 有效的路徑。
/表示整個網站都適用。 - Secure (Flag):
TRUE表示只能在 HTTPS 連線時發送;FALSE表示 HTTP 和 HTTPS 都可以。 - Expiration Timestamp (到期時間戳): Unix 時間戳,表示 Cookie 的過期時間。
- Name (名稱): Cookie 的名稱 (Key)。
- Value (值): Cookie 的對應值 (Value)。
settings.html
<div class="row mb-3">
<label for="cookies" class="col-sm-2 col-form-label">cookies</label>
<div class="col-sm-10 col-lg-8 col-xl-6">
<textarea class="form-control" id="cookies" rows="3"></textarea>
</div>
</div>
nodriver.py
cookie_data = config_dict["advanced"]["cookies"]
if len(cookie_data) > 1:
cookies = await driver.cookies.get_all()
cookies_list = util.parse_netscape_cookies(cookie_data)
for ck in cookies_list:
new_cookie = cdp.network.CookieParam(ck["name"], ck["value"], domain=ck["domain"], path=ck["path"], http_only=False, secure=ck["secure"])
cookies.append(new_cookie)
is_cookie_changed = True
await driver.cookies.set_all(cookies)
selenium_uc.py
cookie_data = config_dict["advanced"]["cookies"]
if len(cookie_data) > 1:
cookies_list = util.parse_netscape_cookies(cookie_data)
try:
driver.execute_cdp_cmd('Network.enable', {})
for ck in cookies_list:
cookie = {
'name': ck["name"],
'value': ck["value"],
'domain': ck["domain"],
'path': ck["path"],
'secure': ck["secure"]
}
driver.execute_cdp_cmd('Network.setCookie', cookie)
#print(f"[OK] 已注入 cookie: {ck['Name']}")
except Exception as e:
print(f"[ERROR] 無法注入 cookie: {e}")
瀏覽器安裝 chrome extension:
Get cookies.txt LOCALLY
https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc

取得已登入的相關網站 cookies, 例如: 特定網站, google, facebook.
