You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Chrome从需认证网站批量下载图片的技术问询

更优的认证网站图片批量下载方案

嘿,我来帮你摆脱手动复制源码、开一堆浏览器标签的低效操作,给你几个靠谱的解决方案👇

方案1:复用Chrome已登录的Cookie(最省事,推荐!)

既然你已经在Chrome里登录过目标网站了,直接把Chrome的登录Cookie拿到Python请求里用就行,不用重新认证,也不用手动复制任何内容。

步骤:

  1. 安装browser-cookie3库,它能自动读取Chrome的Cookie:
pip install browser-cookie3
  1. 用requests库带上Cookie批量下载图片:
import requests
import browser_cookie3

# 获取目标网站在Chrome中的登录Cookie
# 替换成实际的网站域名,比如"example.com"
cj = browser_cookie3.chrome(domain_name="目标网站域名")

def download_image(image_url, save_path):
    try:
        # 带上Cookie请求图片
        resp = requests.get(image_url, cookies=cj)
        resp.raise_for_status()  # 触发HTTP错误提示
        with open(save_path, 'wb') as f:
            f.write(resp.content)
        print(f"✅ 成功保存:{save_path}")
    except Exception as e:
        print(f"❌ 下载失败 {image_url}:{str(e)}")

# 假设你已经解析得到了图片URL列表
image_urls = ["https://目标网站/pic1.jpg", "https://目标网站/pic2.jpg"]
for index, url in enumerate(image_urls):
    download_image(url, f"downloaded_image_{index}.jpg")

这个方案的优势:完全复用你已有的登录状态,不用额外操作,批量下载效率拉满,不会弹出一堆浏览器窗口。

方案2:用requests.Session模拟登录(长期稳定)

如果不想依赖Chrome的状态,可以直接用Python模拟登录,之后保持会话批量下载图片。适合需要定期执行下载任务的场景。

步骤:

  1. 先通过Chrome开发者工具(F12)找到网站的登录接口和需要提交的参数(比如用户名、密码、csrf_token等)。
  2. 编写代码模拟登录+批量下载:
import requests
from bs4 import BeautifulSoup

# 创建会话对象,自动保持登录状态
session = requests.Session()

# 1. 先访问登录页面,提取csrf_token(如果网站有这个验证)
login_page = session.get("https://目标网站/login页面URL")
soup = BeautifulSoup(login_page.text, "html.parser")
# 替换成实际的csrf_token字段名
csrf_token = soup.find("input", {"name": "csrf_token"}).get("value")

# 2. 构造登录参数
login_data = {
    "username": "你的用户名",
    "password": "你的密码",
    "csrf_token": csrf_token  # 如果不需要可以删除这行
}

# 3. 发送登录请求
login_resp = session.post("https://目标网站/登录接口URL", data=login_data)
login_resp.raise_for_status()  # 确保登录成功

# 4. 批量下载图片
def download_image(image_url, save_path):
    try:
        resp = session.get(image_url)
        resp.raise_for_status()
        with open(save_path, 'wb') as f:
            f.write(resp.content)
        print(f"✅ 成功保存:{save_path}")
    except Exception as e:
        print(f"❌ 下载失败 {image_url}:{str(e)}")

# 调用示例
image_urls = ["https://目标网站/pic1.jpg", "https://目标网站/pic2.jpg"]
for index, url in enumerate(image_urls):
    download_image(url, f"downloaded_image_{index}.jpg")

这个方案的优势:不依赖浏览器,只要用户名密码正确就能自动完成登录和下载,适合自动化脚本。

方案3:用Selenium控制Chrome(应对复杂反爬/动态页面)

如果目标网站有复杂的JavaScript渲染、反爬验证,或者图片链接需要动态加载,用Selenium直接控制已登录的Chrome就能解决。

步骤:

  1. 先给Chrome开启远程调试:右键Chrome快捷方式,在「目标」末尾加上 --remote-debugging-port=9222(注意前面有空格),然后打开Chrome并登录目标网站。
  2. 编写代码连接到已登录的Chrome,提取Cookie后批量下载:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import requests

# 连接到已打开的Chrome
options = Options()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(options=options)

# 提取Chrome中的Cookie,转换成requests能用的格式
session = requests.Session()
for cookie in driver.get_cookies():
    session.cookies.set(cookie["name"], cookie["value"])

# 批量下载图片
def download_image(image_url, save_path):
    try:
        resp = session.get(image_url)
        resp.raise_for_status()
        with open(save_path, 'wb') as f:
            f.write(resp.content)
        print(f"✅ 成功保存:{save_path}")
    except Exception as e:
        print(f"❌ 下载失败 {image_url}:{str(e)}")

# 调用示例
image_urls = ["https://目标网站/pic1.jpg", "https://目标网站/pic2.jpg"]
for index, url in enumerate(image_urls):
    download_image(url, f"downloaded_image_{index}.jpg")

# 可选:关闭浏览器
driver.quit()

这个方案的优势:能处理各种复杂的网站场景,完全模拟真实用户的登录状态,不用手动复制页面源码。


内容的提问来源于stack exchange,提问作者Tianyun Ling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:26:51