脚本代码的样例,这里提供了python、Javascript和Java的编写样本
*该样本在selenium版本3.141.0测试通过
import requests,time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import sys
ads_id = "XXX"
apiKey = "your_api_key_here" # 定义 API Key 作为 token
open_url = "http://local.adspower.net:50325/api/v1/browser/start?user_id=" + ads_id
close_url = "http://local.adspower.net:50325/api/v1/browser/stop?user_id=" + ads_id
headers = {
'Authorization': f'Bearer {apiKey}'
}
resp = requests.get(open_url, headers=headers).json()
if resp["code"] != 0:
print(resp["msg"])
print("please check ads_id")
sys.exit()
chrome_driver = resp["data"]["webdriver"]
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", resp["data"]["ws"]["selenium"])
driver = webdriver.Chrome(chrome_driver, options=chrome_options)
print(driver.title)
driver.get("https://www.browserscan.net/")
time.sleep(5)
driver.quit()
requests.get(close_url, headers=headers)
*该样本在selenium版本4.18.1测试通过
import requests,time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
import sys
ads_id = "xxx"
apiKey = "your_api_key_here" # 定义 API Key 作为 token
open_url = "http://local.adspower.com:50325/api/v1/browser/start?user_id=" + ads_id
close_url = "http://local.adspower.com:50325/api/v1/browser/stop?user_id=" + ads_id
headers = {
'Authorization': f'Bearer {apiKey}'
}
resp = requests.get(open_url, headers=headers).json()
print(resp)
if resp["code"] != 0:
print(resp["msg"])
print("please check ads_id")
sys.exit()
chrome_driver = resp["data"]["webdriver"]
service = Service(executable_path=chrome_driver)
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", resp["data"]["ws"]["selenium"])
driver = webdriver.Chrome(service=service, options=chrome_options)
print(driver.title)
driver.get("https://www.browserscan.net/")
time.sleep(5)
driver.quit()
requests.get(close_url, headers=headers)
import httpx
from playwright.sync_api import sync_playwright
LOCAL_API_BASE = "http://127.0.0.1:50325"
Browser_ID = "XXX"
apiKey = "your_api_key_here" # 定义 API Key 作为 token
headers = {
'Authorization': f'Bearer {apiKey}'
}
response = httpx.post(f"{LOCAL_API_BASE}/api/v2/browser-profile/start",
headers=headers,
json={
"profile_id": Browser_ID,
"last_opened_tabs": "0",
"proxy_detection": "0",
})
if response.status_code == 200:
data = response.json()
print(data['data']['ws']['puppeteer'])
with sync_playwright() as playwright:
browser = playwright.chromium.connect_over_cdp(data['data']['ws']['puppeteer'])
defaultContext = browser.contexts[0]
page = defaultContext.pages[0]
page.goto("https://www.browserscan.net")
print(page.title())
page.wait_for_timeout(10000)
browser.close()
const axios = require('axios');
const puppeteer = require('puppeteer-core');
const apiKey = 'your_api_key_here'; // 定义 API Key 作为 token
axios.get('http://local.adspower.net:50325/api/v1/browser/start?user_id=XXX', {
headers: {
'Authorization': `Bearer ${apiKey}`
}
}).then(async (res) => {
console.log(res.data);
if(res.data.code === 0 && res.data.data.ws && res.data.data.ws.puppeteer) {
try{
const browser = await puppeteer.connect({browserWSEndpoint: res.data.data.ws.puppeteer, defaultViewport:null});
const page = await browser.newPage();
await page.goto('https://www.adspower.io');
await page.screenshot({ path: './adspower.png' });
await browser.close();
} catch(err){
console.log(err.message);
}
}
}).catch((err) => {
console.log(err)
})
const axios = require('axios');
const { chromium } = require('playwright');
const apiKey = 'your_api_key_here'; // 定义 API Key 作为 token
axios.get('http://local.adspower.net:50325/api/v1/browser/start?user_id=xxx', {
headers: {
'Authorization': `Bearer ${apiKey}`
}
}).then(async (res) => {
console.log(res.data);
if (res.data.code === 0 && res.data.data.ws && res.data.data.ws.puppeteer) {
try {
const browser = await chromium.connectOverCDP(res.data.data.ws.puppeteer);
const defaultContext = browser.contexts()[0];
// const page = defaultContext.pages()[0];
const page = await defaultContext.newPage();
await page.goto('https://www.browserscan.net');
// await browser.close();
} catch (err) {
console.log(err.message);
}
}
}).catch((err) => {
console.log(err)
});
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class AdsDemo {
WebDriver driver;
private String apiKey = "your_api_key_here"; // 定义 API Key 作为 token
private String adsId = "xxxx";
private WebDriver getDriver() {
try {
// 构建启动浏览器的 URL
String openUrl = "http://local.adspower.net:50325/api/v1/browser/start?user_id=" + adsId;
// 发送 HTTP GET 请求,带 Authorization Bearer Token
JsonObject result = makeHttpRequest(openUrl);
// 检查响应状态
if (result.get("code").getAsInt() != 0) {
System.out.println("Error: " + result.get("msg").getAsString());
System.out.println("Please check ads_id");
return null;
}
// 获取返回的数据
JsonObject data = result.getAsJsonObject("data");
String chromeDriver = data.get("webdriver").getAsString();
String debuggerAddress = data.getAsJsonObject("ws").get("selenium").getAsString();
// 设置 webdriver 路径
System.setProperty("webdriver.chrome.driver", chromeDriver);
// 配置 Chrome 选项
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("debuggerAddress", debuggerAddress);
// 创建 WebDriver 实例
driver = new ChromeDriver(options);
driver.get("https://www.browserscan.net/");
return driver;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private JsonObject makeHttpRequest(String url) throws Exception {
// 创建 HTTP 客户端
HttpClient client = HttpClient.newHttpClient();
// 构建请求,添加 Authorization Bearer Token header
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer " + apiKey)
.GET()
.build();
// 发送请求并获取响应
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
// 解析 JSON 响应
return JsonParser.parseString(response.body()).getAsJsonObject();
}
public void closeBrowser() {
try {
if (driver != null) {
driver.quit();
}
// 关闭浏览器的 API 请求
String closeUrl = "http://local.adspower.net:50325/api/v1/browser/stop?user_id=" + adsId;
makeHttpRequest(closeUrl);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
AdsDemo demo = new AdsDemo();
WebDriver driver = demo.getDriver();
if (driver != null) {
System.out.println("Browser started successfully!");
System.out.println("Title: " + driver.getTitle());
// 等待用户输入后关闭
System.out.println("Press Enter to close browser...");
try {
System.in.read();
} catch (Exception e) {
e.printStackTrace();
}
demo.closeBrowser();
}
}
}
*需升级 Patch 2.6.9.4 及以上,且firefox 123 及以上内核
*该样本在selenium版本4.18.1测试通过
import requests,time
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
import sys
ads_id = "xxx"
apiKey = "your_api_key_here" # 定义 API Key 作为 token
open_url = "http://local.adspower.com:50325/api/v1/browser/start?user_id=" + ads_id
close_url = "http://local.adspower.com:50325/api/v1/browser/stop?user_id=" + ads_id
headers = {
'Authorization': f'Bearer {apiKey}'
}
resp = requests.get(open_url, headers=headers).json()
print(resp)
if resp["code"] != 0:
print(resp["msg"])
print("please check ads_id")
sys.exit()
firefox_driver = resp["data"]["webdriver"]
port = resp["data"]["marionette_port"]
#driver 实际路径
firefox_services = Service(executable_path=firefox_driver, service_args=['--marionette-port', port, '--connect-existing'])
driver = webdriver.Firefox(service=firefox_services)
driver.get('https://www.browserscan.net')
input("Press Enter to exit...")