🐬 selenium-dolphin
A Python module for controlling Dolphin browser profiles using Selenium or Pyppeteer 🤖. It also has a Dolphin API for creating, editing, and deleting profiles.
⚠️ Warning!
Selenium and some features working only if Dolphin Anty is opened!!! (Local API wrapper must be launched!)
🚀 Quickstart
Selenium
import random
import selenium_dolphin as dolphin
from selenium_dolphin import DolphinAPI, STABLE_CHROME_VERSION
from selenium.webdriver.chrome.options import Options
api = DolphinAPI(api_key='Your Api Key')
response = api.get_profiles()
if response['data']:
profile_id = response['data'][-1]['id']
if profile_id:
api.delete_profiles([profile_id])
fingerprint = []
while not fingerprint:
fingerprint = api.generate_fingerprint(platform='windows', browser_version=f'{random.randint(114, STABLE_CHROME_VERSION)}')
data = api.fingerprint_to_profile(name='my superprofile', fingerprint=fingerprint)
profile_id = api.create_profile(data)['browserProfileId']
response = dolphin.run_profile(profile_id)
port = response['automation']['port']
options = Options()
options.add_argument("--start-maximized")
driver = dolphin.get_driver(options=options, port=port)
driver.get('https://google.com/')
print(driver.title)
driver.quit()
dolphin.close_profile(profile_id)
Pyppeteer
import asyncio
import random
import selenium_dolphin as dolphin
from selenium_dolphin import DolphinAPI, STABLE_CHROME_VERSION
api = DolphinAPI(api_key='Your Api Key')
response = api.get_profiles()
if response['data']:
profile_id = response['data'][-1]['id']
if profile_id:
api.delete_profiles([profile_id])
fingerprint = []
while not fingerprint:
fingerprint = api.generate_fingerprint(platform='windows', browser_version=f'{random.randint(114, STABLE_CHROME_VERSION)}')
data = api.fingerprint_to_profile(name='my superprofile', fingerprint=fingerprint)
profile_id = api.create_profile(data)['browserProfileId']
response = dolphin.run_profile(profile_id)
port = response['automation']['port']
ws_endpoint = response['automation']['wsEndpoint']
async def main():
browser = await dolphin.get_browser(ws_endpoint, port)
pages = await browser.pages()
page = pages[0]
await page.goto('http://google.com/')
await asyncio.sleep(5)
await browser.disconnect()
asyncio.run(main())
dolphin.close_profile(profile_id)
📝 Get profiles
from selenium_dolphin import DolphinAPI
api = DolphinAPI()
You can get an API key here, but if the token is present in the logs, the module can automatically retrieve it.
response = api.get_profiles()
print(response)
Pagination and limitation
response = api.get_profiles(page=1, limit=300)
🆕 Create profile
fingerprint = api.generate_fingerprint(platform='linux')
data = api.fingerprint_to_profile(name='my profile', fingerprint=fingerprint)
response = api.create_profile(data)
print(response)
📝 Custom data for profile
After this line:
data = api.fingerprint_to_profile(name='my profile', fingerprint=fingerprint)
Use for:
Geolocation 🗺️
data.update({'geolocation':{
'mode': 'manual',
'latitude': 33.4,
'longitude': 55.2,
'accuracy': 318
}})
Timezone ⏰
data.update({'timezone':{
'mode':'manual',
'value':'Pacific/Johnston'
}})
Locale 🌎
data.update({'locale':{
'mode':'manual',
'value':'af_ZA'
}})
Proxy 🕸️
data.update({'proxy':{
'name': 'http://37.19.220.129:8443',
'host': '37.19.220.129',
'port': '8443',
'type': 'http'
}})
and others...
✏️ Edit profile
from selenium_dolphin import DolphinAPI
api = DolphinAPI()
fingerprint = api.generate_fingerprint(platform='windows')
data = api.fingerprint_to_profile(name='mega profile', fingerprint=fingerprint)
response = api.edit_profile(190438486, data)
print(response)
🗑️ Delete profile(s)
from selenium_dolphin import DolphinAPI
api = DolphinAPI()
response = api.delete_profiles([190438486])
print(response)
🔍 Other features
Proxy checker
response = api.check_proxy(host='37.19.220.129', port='8443', type='http')
print(response)
Response:
{"success": true, "country": "US", "region": "Virginia", "city": "Ashburn", "ip": "37.19.220.178", "timezone": "America/New_York"}
MAC Address generator
response = api.generate_mac()
print(response)
Response:
{"success": true, "macAddress": "8E:DD:48:08:F1:31"}
Conclusion
selenium-dolphin provides a straightforward way to control Dolphin browser profiles for automation testing using Selenium or Pyppeteer 🤖. With the Dolphin API, you can easily create, customize, and manage profiles right from Python. Give it a try for your next web scraping or test automation project! 🐬