登陆一次b站获取cookie免登陆登陆b站

本文通过使用Selenium自动化测试工具,演示了如何实现B站的登录流程。包括获取并保存登录后的Cookies到本地文件,以及如何利用这些Cookies实现免登录访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

selenium模块练习,爬虫初学。

先获取cookie保存到cookies.txt文件中:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from time import sleep
import json

s = Service("../chromedriver.exe")
bro = webdriver.Chrome(service=s)
#打开b站
bro.get('https://www.bilibili.com/video/BV1Yh411o7Sz/?p=77&spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=763026b3fd930918486c9b0c9858abdc')
sleep(2)

#关掉弹幕
bro.find_element(By.CLASS_NAME,'bui-danmaku-switch-input').click()
sleep(2)

#点击登陆
bro.find_element(By.XPATH,'//*[@id="biliMainHeader"]/div/div/ul[2]/li[1]/li/div/div').click()

#切换进账号输入界面,将xxx 和 yyy 改成你的账号和密码
sleep(5)
bro.find_element(By.XPATH,'/html/body/div[4]/div/div[2]/div[3]/div[2]/div[1]/input').send_keys('xxx')
bro.find_element(By.XPATH,'/html/body/div[4]/div/div[2]/div[3]/div[2]/div[2]/div[1]/input').send_keys('yyy')
bro.find_element(By.XPATH,'/html/body/div[4]/div/div[2]/div[3]/div[3]/div[2]').click()

bro.delete_all_cookies()#先删除cookies

#60秒时间留你进行登陆
sleep(60)
dictcookies = bro.get_cookies()#读取登录之后浏览器的cookies
jsoncookies = json.dumps(dictcookies)#将字典数据转成json数据便于保存

#生成cookies.txt文件
with open('cookies.txt','w') as f:#写进文本保存
    f.write(jsoncookies)
print('cookies is ok')

再添加cookie到请求头内并进行登陆:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import json

s = Service("../chromedriver.exe")
web = webdriver.Chrome(service=s)
web.get('https://www.bilibili.com/video/BV1Yh411o7Sz/?p=77&spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=763026b3fd930918486c9b0c9858abdc')
f = open('cookies.txt','r')
listcookie = json.loads(f.read())#读取文件中的cookies数据
for cookie in listcookie:
    web.add_cookie(cookie)#将cookies数据添加到浏览器
web.refresh()#刷新网页
### 如何正确抓取 Bilibili Cookie 并用于开发或爬虫 为了从 Bilibili 抓取并利用 Cookie 进行后续操作,以下是详细的说明: #### 使用 Selenium 获取 Cookie Selenium 是一种强大的工具,可以通过模拟浏览器行为来获取动态网页中的数据。通过它登录 Bilibili 后,可以直接提取当前页面的 Cookies。 ```python from selenium import webdriver import time # 初始化 WebDriver (需提前安装对应驱动程序,如ChromeDriver) driver = webdriver.Chrome() try: driver.get('https://www.bilibili.com/') # 等待用户手动完成登录过程 print("请在浏览器中完成登录...") time.sleep(30) # 给予充足时间 # 提取所有 cookies all_cookies = driver.get_cookies() finally: driver.quit() for cookie in all_cookies: print(f"{cookie['name']}: {cookie['value']}") # 将 cookies 序列化存储以便后续使用 import json with open('bilibili_cookies.json', 'w') as f: json.dump(all_cookies, f) print("Cookies 已成功保存至 bilibili_cookies.json 文件") ``` 上述代码展示了如何借助 Selenium 登录网后提取 Cookies[^2]。 #### 手动设置 Requests 的 Headers 和 Cookies 一旦获得了 Cookies,就可以将其应用于 `requests` 请求头中以保持会话状态。下面是一段示例代码展示这一过程: ```python import requests import json session = requests.Session() # 加载之前保存下来的cookies文件 with open('bilibili_cookies.json', 'r') as f: loaded_cookies = json.load(f) # 添加到Session对象里 for c in loaded_cookies: session.cookies.set(c['name'], c['value']) response = session.get('https://api.bilibili.com/x/space/arc/search?mid=XXXXX&ps=30&tid=0&page=1&keyword=&order=pubdate') if response.status_code == 200: data = response.json() print(data) else: print(f"请求失败: HTTP Status Code {response.status_code}") ``` 这段脚本演示了怎样读取本地存储好的 Cookies 数据,并配置给新的 Session 对象从而维持已认证的状态访问受保护资源接口[^1]。 #### Ajax API 接口调用注意事项 如果目标是从 AJAX 调用来捕获实时更新的数据流比如评论或者弹幕,则需要注意找到实际发出请求的具体 URL 地址及其参数结构。通常情况下,这类链接不会直接暴露敏感信息而是依赖于前面提到过的合法身份验证机制即有效的 Cookies 来确认权限合法性[^5]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值