比特指纹浏览器Python 接口文档及示例代码

比特指纹浏览器内核也是谷歌的,适合做多账号批量网页自动化,官方也给出了接口文档接口如下:

import requests
import json
import time

# 官方文档地址
# https://doc2.bitbrowser.cn/jiekou/ben-di-fu-wu-zhi-nan.html

# 此demo仅作为参考使用,以下使用的指纹参数仅是部分参数,完整参数请参考文档

url = "http://127.0.0.1:54345"
headers = {'Content-Type': 'application/json'}


def createBrowser():  # 创建或者更新窗口,指纹参数 browserFingerPrint 如没有特定需求,只需要指定下内核即可,如果需要更详细的参数,请参考文档
    json_data = {
        'name': 'google',  # 窗口名称
        'remark': '',  # 备注
        'proxyMethod': 2,  # 代理方式 2自定义 3 提取IP
        # 代理类型  ['noproxy', 'http', 'https', 'socks5', 'ssh']
        'proxyType': 'noproxy',
        'host': '',  # 代理主机
        'port': '',  # 代理端口
        'proxyUserName': '',  # 代理账号
        "browserFingerPrint": {  # 指纹对象
            'coreVersion': '124'  # 内核版本,注意,win7/win8/winserver 2012 已经不支持112及以上内核了,无法打开
        }
    }

    res = requests.post(f"{url}/browser/update",
                        data=json.dumps(json_data), headers=headers).json()
    browserId = res['data']['id']
    print(browserId)
    return browserId


def updateBrowser():  # 更新窗口,支持批量更新和按需更新,ids 传入数组,单独更新只传一个id即可,只传入需要修改的字段即可,比如修改备注,具体字段请参考文档,browserFingerPrint指纹对象不修改,则无需传入
    json_data = {'ids': ['93672cf112a044f08b653cab691216f0'],
                 'remark': '我是一个备注', 'browserFingerPrint': {}}
    res = requests.post(f"{url}/browser/update/partial",
                        data=json.dumps(json_data), headers=headers).json()
    print(res)


def openBrowser(id):  # 直接指定ID打开窗口,也可以使用 createBrowser 方法返回的ID
    json_data = {"id": f'{id}'}
    res = requests.post(f"{url}/browser/open",
                        data=json.dumps(json_data), headers=headers).json()
    return res


def closeBrowser(id):  # 关闭窗口
    json_data = {'id': f'{id}'}
    requests.post(f"{url}/browser/close",
                  data=json.dumps(json_data), headers=headers).json()


def deleteBrowser(id):  # 删除窗口
    json_data = {'id': f'{id}'}
    print(requests.post(f"{url}/browser/delete",
          data=json.dumps(json_data), headers=headers).json())


if __name__ == '__main__':
    browser_id = createBrowser()
    openBrowser(browser_id)

    time.sleep(10)  # 等待10秒自动关闭窗口

    closeBrowser(browser_id)

    time.sleep(10)  # 等待10秒自动删掉窗口

    deleteBrowser(browser_id)

使用selenium调用接口示例代码:

 

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from bit_api import *
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

# /browser/open 接口会返回 selenium使用的http地址,以及webdriver的path,直接使用即可
res = openBrowser("babd00108d4e4466ace26dd1fcc4ab46") # 窗口ID从窗口配置界面中复制,或者api创建后返回

print(res)

driverPath = res['data']['driver']
debuggerAddress = res['data']['http']

# selenium 连接代码
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("debuggerAddress", debuggerAddress)

chrome_service = Service(driverPath)
driver = webdriver.Chrome(service=chrome_service, options=chrome_options)

# 以下为PC模式下,打开baidu,输入 BitBrowser,点击搜索的案例
driver.get('https://www.baidu.com/')

input = driver.find_element(By.CLASS_NAME, 's_ipt')
input.send_keys('BitBrowser')

print('before click...')

btn = driver.find_element(By.CLASS_NAME, 's_btn')
btn.click()

print('after click')

 

playwright调用接口示例代码:

from bit_api import *
import time
import asyncio
from playwright.async_api import async_playwright, Playwright



async def run(playwright: Playwright):

  # /browser/open 接口会返回 selenium使用的http地址,以及webdriver的path,直接使用即可
  browser_id = "1ce676a2ae0a41bcaf73c6934d8ff230" # 窗口ID从窗口配置界面中复制,或者api创建后返回
  res = openBrowser(browser_id)
  ws = res['data']['ws']
  print("ws address ==>>> ", ws)

  chromium = playwright.chromium
  browser = await chromium.connect_over_cdp(ws)
  default_context = browser.contexts[0]

  print('new page and goto baidu')

  page = await default_context.new_page()
  await page.goto('https://baidu.com')

  time.sleep(2)

  print('clsoe page and browser')
  await page.close()

  time.sleep(2)
  closeBrowser(browser_id)

async def main():
    async with async_playwright() as playwright:
      await run(playwright)

asyncio.run(main())

### 使用Python实现比特指纹浏览器功能 为了通过Python实现类似于比特指纹浏览器的功能,主要涉及几个方面的工作:设置代理IP、模拟浏览器行为以及管理多个独立的浏览器实例。下面具体介绍这些方面的实现方法。 #### 设置代理IP 对于代理IP的支持,可以通过`requests`库中的`proxies`参数轻松完成。这允许程序发送HTTP/HTTPS请求时经过特定的代理服务器。需要注意的是,在配置代理的时候应当确保所使用的协议(如SOCKS5)与目标服务兼容[^2]。 ```python import requests proxy = { 'http': 'socks5h://用户名:密码@代理地址:端口号', 'https': 'socks5h://用户名:密码@代理地址:端口号' } response = requests.get('http://example.com', proxies=proxy) print(response.text) ``` #### 创建独立浏览器环境 创建独立的浏览器环境意味着每个浏览器实例都应该有自己独特的指纹特征,包括但不限于User-Agent字符串、屏幕分辨率等。利用`selenium`配合ChromeDriver或其他WebDriver驱动器可以做到这一点。通过修改浏览器启动选项来定制化各个会话的特性,进而达到隔离的效果[^1]。 ```python from selenium import webdriver from selenium.webdriver.chrome.options import Options as ChromeOptions chrome_options = ChromeOptions() # 添加自定义UA和其他必要的头部信息 chrome_options.add_argument('--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64)"') driver = webdriver.Chrome(options=chrome_options) # 执行一些页面交互... driver.quit() # 关闭浏览器 ``` #### 管理多账户登录状态 当处理像Facebook这样的社交平台或多账号运营场景下,保持不同用户的登录状态至关重要。通常情况下,这是通过保存Cookies的方式来达成目的。每次新开启一个浏览器实例之前加载相应的Cookie文件就可以维持已有的认证信息而不必每次都重新输入凭证。 ```python import pickle def save_cookies(driver, path): with open(path, 'wb') as filehandler: pickle.dump(driver.get_cookies(), filehandler) def load_cookies(driver, path): with open(path, 'rb') as cookiesfile: cookies = pickle.load(cookiesfile) for cookie in cookies: driver.add_cookie(cookie) ``` 综上所述,虽然无法完全复制比特指纹浏览器的所有高级特性和界面设计,但是借助上述技术组合可以在一定程度上模仿其核心能力——即为用户提供安全可靠的多身份浏览体验的同时保护个人隐私不受侵犯。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淘小白_TXB2196

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值