İçeriğe atla

API

Giriş

Undetectable API v1.5 ile profil listesi alabilir, profiller oluşturabilir, başlatabilir, güncelleyebilir ve kapatabilirsiniz. Ayrıca, Chromium çekirdeğindeki profillerde Puppeteer, Playwright gibi çeşitli otomasyon araçlarını kullanarak otomasyon işlemleri gerçekleştirebilirsiniz.

Selenium ile çalışmak için Chromedriver’ı buradan indirebilirsiniz:
Windows
MacOS M series
MacOS Intel

API ile çalışmak için programın çalışıyor olması gerekmektedir.

Varsayılan olarak, yerel sunucu 25325 numaralı portta çalışır, bu port doluysa başka bir portta çalışır. Program ayarlarında portu görebilir ve istediğiniz gibi değiştirebilirsiniz.

Yerel sunucuya erişmek için IP olarak 127.0.0.1, localhost veya ağınızdaki yerel IP’yi ve ayarlardan alınan portu kullanın ve istediğiniz yolu ekleyin, örneğin http://localhost:25325/status.

API’ye verilen tüm yanıtlar şu şekildedir:

{
"code": `<durum kodu>`,
"status": `<durum>`,
"data": `<dönüş nesnesi>`,
}

burada <durum kodu> ve <durum> durumu yansıtır:

<durum kodu><durum>Açıklama
0”success”başarılı
1”error”hata, <dönüş nesnesi> = {“error”:“hata açıklaması”}

<dönüş nesnesi> - API’ye gönderilen çeşitli veriler, örneğin profil listesi.

Hatalar şu şekildedir:

{
"code":1,
"status":"error",
"data":
{"error": "hata açıklaması"},
}

İstekler

Durum

  • Yol: /status
  • Metod: GET

Açıklama: Yerel sunucunun durumunu döndürür, çalışıyor mu yoksa çalışmıyor mu

Dönen Veri
{
"code":0,
"status":"success",
"data":{},
}

Profil Listesi

  • Yol: /list
  • Metod: GET

Açıklama: Programda mevcut olan Chromium tarayıcısındaki profil listesini döndürür

Dönen Veri
{
"code": 0,
"status": "success",
"data" {
"profile_id1": {
"name": "Profil1" // Programdaki profil adı
"status": "Mevcut", // profil durumu, "Başlatıldı", "Kilitlendi", "Mevcut" olabilir
"debug_port": "xxxx", // otomasyon için tarayıcının hata ayıklama bağlantı noktası (profil başlatılmamışsa boş). Sadece Chromium tarayıcısı için
"websocket_link": "ws://127.0.0.1:xxxx/devtools/browser/xxxxxx", // tarayıcıya bağlantı için bağlantı noktası (profil başlatılmamışsa boş). Sadece Chromium tarayıcısı için
"folder": "Ad", // profil klasörü adı
"tags": ["etiket1", "etiket2", "etiket3"], // profil etiketleri
"cloud_id": "", // bulut profil kimliği
"creation_date": 123456789, // Unix Zaman Damgası ile oluşturma tarihi
"modify_date": 123456789, // Unix Zaman Damgası ile değiştirme tarihi
},
"profile_id2": {
},
},
}

Profil Oluşturma

  • Yol: /profile/create
  • Metod: POST

Açıklama: Seçilen parametrelerle bir profil oluşturur. Tüm parametreler isteğe bağlıdır ve olmayabilir. Komut için tarayıcı listesi: Chrome, Edge, FireFox, IE, Opera, Safari, Yandex. Komut için işletim sistemi listesi: Windows, Windows 7, Windows 8, Windows 8.1, Windows 10, Android, iPhone, iPad, Linux, Mac. Seçilen işletim sistemi veya tarayıcıyla yapılandırmalar yoksa, rastgele bir işletim sistemi veya tarayıcı türü kullanılır
Format: JSON

İstek parametreleri:
{
"name": "rastgele ayarlarla profil", // Programdaki profil adı
"os": "Windows", // Hangi işletim sistemi yapılandırmasını kullanmak için
"browser": "Chrome", // Hangi tarayıcı yapılandırmasını kullanmak için
"cpu": 8, // Çekirdek sayısı, mümkün olan değerler: 32, 24, 20, 16, 12, 10, 8, 7, 6, 5, 4, 3, 2, 1, 0
"memory": 8, // Bellek miktarı, mümkün olan değerler: 8, 4, 2, 1, 0
"tags": ["etiket1", "etiket2"], // Profil üzerine etiketler ekleyin
"geolocation": "12.44, 13.524", // Coğrafi konumu ayarlayın, boş veya geçersiz bir değer girerseniz, varsayılan ayarları kullanır
"resolution": "1024x768", // Ekran çözünürlüğü, mümkün olan değerler: "800x600", "960x540", "1024x768", "1152x864", "1280x720", "1280x768", "1280x800", "1280x1024", "1366x768", "1408x792", "1440x900", "1400x1050", "1440x1080", "1536x864", "1600x900", "1600x1024", "1600x1200", "1680x1050", "1920x1080", "1920x1200", "2048x1152", "2560x1080", "2560x1440", "3440x1440", "3840x2160", "5120x1440"
"proxy": "socks5://127.0.0.1:5555:login:pass", // Profilde proxy değiştirme (proxy'ler http, https, socks5 olabilir, kullanıcı adı/parola ile veya olmadan olabilir)
"notes": "Metin", // Profilde notları değiştirme
"folder": "testKlasörü", // Profil hangi klasörde olacak
"language": "ru-RU, en-US", // 2 dil ayarlayabilirsiniz
"cookies": [{}], // Çerezleri profilde içe aktarın
"type": "cloud", // Profil türü: cloud, local
"group": "grup_örneği", // Girilen bir grup yoksa, varsayılan Ayarlardan alır, varsa ve yanlışsa hata verir
"configid": "id", // Config ID, girilirse, OS ve Browser parametreleri yoksayılır, diğer parametreler mümkün olduğunca uygulanır, örneğin, Android için bir config ise, ekran çözünürlüğü değişmez
"accounts": [ // Farklı sitelerden hesapları profilde içe aktarın
{"website": "facebook.com", "username": "test@gmail.com", "password": "123456"},
{"website": "mail.com","username": "test@gmail.com","password": "123456"}
],
"timezone": "Pacific/Niue" ("Auto", "System") // set timezone or timezone mode
}
Dönen Veri:
{
"code": 0,
"status": "success",
"data": {
"profile_id": "xxxxxxxx...", // Profil için benzersiz ID
"name": "rastgele ayarlarla profil" // Programdaki profil adı
}
}

Profili Başlatma

  • Yol: /profile/start/<profileID>
  • Metod: GET

Açıklama: Seçilen <profileID> ile profili başlatır. Bağlantı parametrelerine aşağıdakileri ekleyebilirsiniz:

  • chrome_flags ve başlatma bayrakları ekleyebilirsiniz, ancak bunları URL kodlamasına dikkat ederek eklemelisiniz, örneğin: ?chrome_flags=—blink-settings%3DimagesEnabled%3Dfalse%20—disable-webgl2
  • start-pages ve başlangıç sayfalarını belirtebilirsiniz, ancak bunları URL kodlamasına dikkat ederek eklemelisiniz, örneğin: ?start-pages=https%3A%2F%2Fgoogle.com%2Chttps%3A%2F%2Fya.ru
Dönen Veri
{
"code":0,
"status":"success",
"data":{
"name": "Profil1" // Programdaki profil adı
"websocket_link":"ws://127.0.0.1:xxxx/devtools/browser/xxxxxx", // otomasyon için kullanılan tarayıcı bağlantısı (profil başlatılmamışsa boş değer). Sadece Chromium tarayıcı için
"debug_port": "xxxx", // Chromium tarayıcının hata ayıklama bağlantı noktası, otomasyon için kullanılır (profil başlatılmamışsa boş değer). Sadece Chromium tarayıcı için
"folder": "Ad", // Profil klasörü adı
"tags": ["etiket1", "etiket2", "etiket3"] // Profil etiketleri
},
}

Profili Kapatma

  • Yol: /profile/stop/<profileID>
  • Metod: GET

Açıklama: Seçilen <profileID> ile profili durdurur.

Veri Dönüşü:
{
"code": 0,
"status": "başarılı",
"data": {}
}

Profil Güncelleme

  • Yol: /profil/güncelle/<profilID>
  • Metod: POST

Açıklama: Belirtilen <profilID> ile profildeki bilgileri günceller. Tüm parametreler isteğe bağlıdır, olmayabilirler.
Format: JSON

İstek parametreleri:
{
"proxy": "socks5://127.0.0.1:5555:login:pass", // Profildeki proxy'yi değiştirir (proxy'ler http, https, socks5 olabilir, kullanıcı adı/parola ile veya kullanıcı adı/parolasız olabilir)
"notes": "Metin", // Profildeki notları değiştirir
"name": "Profil Adı", // Profil adını değiştirir
"folder":"TestKlasörü", // Profildeki klasığı değiştirir
"tags": ["etiket1", "etiket2"], // Profil için etiketleri ayarlar, eski etiketler silinir, eğer dizi boşsa, tüm etiketler profilden silinir
"geolocation": "12.44, 13.524", // Coğrafi konumu ayarlar, boş veya geçersiz bir değer girilirse, varsayılan ayarları kullanır
"cookies":[{}], // Profildeki çerezleri içe aktarır
"type": "bulut", // Profil türü: bulut, yerel
"group": "grup_örneği", // Girilen grup yoksa, varsayılan Ayarlardan alır, varsa ve yanlışsa hata mesajı verir
"accounts": [ // Farklı sitelerden hesapları profilde içe aktarır
{"website": "facebook.com", "username": "test@gmail.com", "password": "123456"},
{"website": "mail.com","username": "test@gmail.com","password": "123456"}
],
"timezone": "Pacific/Niue" ("Auto", "System") // set timezone or timezone mode
}
Veri Dönüşü:
{
"code": 0,
"status": "başarılı",
"data": {}
}

Profil Silme

  • Yol: /profil/sil/<profilID>
  • Metod: GET

Açıklama: Seçilen <profilID> ile profili siler.

Veri Dönüşü:
{
"code": 0,
"status": "başarılı",
"data": {}
}

Profil Verilerini Temizleme

  • Yol: /profil/veritemizle/<profilID>
  • Metod: GET

Açıklama: Seçilen <profilID> ile profildeki tüm verileri (çerezler, geçmiş, notlar, önbellek vb.) temizler.

Veri Dönüşü:
{
"code": 0,
"status": "başarılı",
"data": {}
}

Clear profile cookies

  • Path: /profile/clearcookies/<profileID>
  • Method: GET

Description: Clear only cookies from profile with selected <profileID>

Returning Data:
{
"code": 0,
"status": "success",
"data": {}
}

Profil Çerezleri

  • Yol: /profil/çerezler/<profilID>
  • Metod: GET

Açıklama: Seçilen <profilID> ile profildeki çerezleri talep eder.

Veri Dönüşü:
{
"code": 0,
"status": "başarılı",
"data": {}
}

Buluta Gönderme

  • Yol: /profil/buluta
  • Metod: POST

Açıklama: Seçilen profilleri buluta gönderir.
Format: JSON

İstek parametreleri:
{
"profiles": ["9b24cd2604d1b8260123242ab1f30c", "f4cbe3c89618bfc9647ba8a47c13f6"]
}
Veri Dönüşü:
{
"code": 0,
"status": "başarılı",
"data": {}
}

Yerel Yapma

  • Yol: /profil/yerel
  • Metod: POST

Açıklama: Seçilen profilleri yerel yapar.
Format: JSON

İstek parametreleri:
{
"profiles": ["9b24cd2604d1b8260123242ab1f30c", "f4cbe3c89618bfc9647ba8a47c13f6"],
"group": "test"
}
Veri Dönüşü:
{
"code": 0,
"status": "başarılı",
"data": {}
}

Tarayıcı Sürümünü Güncelleme

  • Yol: /profil/tarayıcıgüncelle/<profilID>
  • Metod: GET

Açıklama: Seçilen <profilID> ile profildeki tarayıcı sürümünü günceller.
Format: JSON

Veri Dönüşü:
{
"code": 0,
"status": "başarılı",
"data": {}
}

Yapılandırma Listesi

  • Yol: /yapılandırmalistesi
  • Metod: GET

Açıklama: Aktif yapılandırma listesini döndürür.
Format: JSON

Veri Dönüşü:
{
"code":0,
"status":"başarılı",
"data": {
"config_id1":
{
"os": "Windows 10" // İşletim Sistemi
"browser":"Chrome 115", // Tarayıcı Türü ve Sürümü
"useragent": "xxxx", // Yapılandırmadaki UserAgent
"webgl": "Apple GPU", // Yapılandırmadaki WebGL
"screen": "1024x768", // Ekran Çözünürlüğü
},
"config_id2":
{
},
},
}

Grup Listesi

  • Yol: /groupslist
  • Metod: GET

Açıklama: Grup listesini döndürür
Format: JSON

Veri Dönüşü:
{
"code":0,
"status": "başarılı",
"data": {["grup1", "grup2"]},
}

Profil Bilgisi

  • Yol: /profile/getinfo/<profileID>
  • Metod: GET

Açıklama: Seçilen <profileID> ile profil bilgisini isteyin
Format: JSON

Veri Dönüşü:
{
"code":0,
"status": "başarılı",
"data": {
"name": "Profil1" // Programdaki profil adı
"status": "Mevcut", // Profil durumu, "Başladı", "Kilitlendi", "Mevcut" olabilir
"debug_port": "xxxx", // Tarayıcının hata ayıklama bağlantı noktası, otomasyon için kullanılır (profil başlatılmamışsa boş değer)
"websocket_link": "ws://127.0.0.1:xxxx/devtools/browser/xxxxxx", // Tarayıcı bağlantı noktası, otomasyon için kullanılır (profil başlatılmamışsa boş değer)
"configid": "id" // Yapılandırma Kimliği
"cloud_id": ""
"type": "cloud" // Profil Türü: cloud, yerel
"proxy": "socks5://127.0.0.1:5555:login:pass", // Profil proxy'si
"folder": "Ad", // Profil klasör adı
"tags": ["etiket1", "etiket2", "etiket3"], // Profil etiketleri
"notes": "Metin", // Profil notları
"useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.43", // Profil useragent'ı
"browser": "Edge 114.0.1823.43", // Profil tarayıcısı
"os": "Windows 10", // Profil işletim sistemi
"screen": "1366x768", // Profil ekran çözünürlüğü
"language": "en-US,en;q=0.9,ak-GH;q=0.8,ak;q=0.7", // Profil dil
"cpu": 8, // Çekirdek sayısı
"memory": 4, // Bellek miktarı
"creation_date": 123456789, // Unix Zaman Damgası oluşturma tarihi
"modify_date": 123456789, // Unix Zaman Damgası değiştirme tarihi
},
}

Check IP

  • Path: /profile/getinfo/<profileID>
  • Method: GET

Description: Checks the connection in the profile with the selected , if the check fails, an error is returned
Format: JSON

Returning Data:
{
"code":0,
"status": "success",
"data": {
"ip": "127.0.0.1" // Returns the IP address in this profile
}
}

Get timezones list

  • Path: /timezoneslist
  • Method: GET

Description: Returning timezones list
Format: JSON

Returning Data:
{
"code":0,
"status": "success",
"data": {
"Pacific/Niue": "GMT-11:00",
"America/Cambridge_Bay": "GMT-7:00",
...
},
}

Get proxies list

  • Path: /proxies/list
  • Method: GET

Description: Returning proxies list
Format: JSON

Returning Data:
{
"code":0,
"status": "success",
"data": {
"proxy_id1":
{
"name": "Proxy1"
"type": "http",
"host": "127.0.0.1",
"port": "2222",
"login": "12345",
"password": "12345",
"ipchangelink": "",
}
"proxy_id2":
{
},
}
}

Add proxy

  • Path: /proxies/add
  • Method: POST

Description: Add a proxy to the proxy manager, the parameters login, password, ipchangelink are optional, the rest are required
Format: JSON

Request parameters:
{
"name": "Proxy1",
"type": "http",
"host": "127.0.0.1",
"port": "2222",
"login": "12345",
"password": "12345",
"ipchangelink": ""
}
Returning Data:
{
"code": 0,
"status": "success",
"data": {
"proxy_id": "12345"
}
}

Delete proxy

  • Path: /proxies/delete/<ProxyID>
  • Method: GET

Description: Removes a proxy with the selected ID. Proxy will be deleted for all profiles with that proxy, the same as during normal deletion from the manager
Format: JSON

Returning Data:
{
"code":0,
"status":"success",
"data": {
},
}

Update proxy

  • Path: /proxies/update/<ProxyID>
  • Method: POST

Description: Updates the proxy with the selected ID, all parameters are optional
Format: JSON

Request parameters:
{
"name": "Proxy1",
"type": "http",
"host": "127.0.0.1",
"port": "2222",
"login": "12345",
"password": "12345",
"ipchangelink": ""
}
Returning Data:
{
"code": 0,
"status": "success",
"data": {
}
}

Örnekler

Puppeteer (Node.js)

Node.js Puppeteer, belirli bir adla bir profil başlatma ve bu profilde undetectable.io sitesini açma:

const puppeteer = require('puppeteer');
const axios = require('axios');
const port = 25325; // Port
const ip = '127.0.0.1'; // Yerel IP
const profileName = ‘TestProfil; // Profil adı
const sleep = (ms) => {
return new Promise((resolve) => setTimeout(resolve, ms));
};
axios.get('http://' + ip + ':' + port + '/status').then(response => {
if (response.data.code == 0) {
axios.get('http://' + ip + ':' + port + '/list').then(async response => {
for (var profile in response.data.data) {
///// Belirli bir profili başlatma ve sayfaya gitme
if (response.data.data[profile].name == profileName ) {
axios.get('http://' + ip + ':' + port + '/profile/start/' + profile).then(async response => {
try {
const browser = await puppeteer.connect({
browserWSEndpoint: response.data.data.websocket_link,
defaultViewport: null
});
const page = await browser.newPage();
await sleep(1000);
await page.goto('https://undetectable.io');
} catch (e) {
console.log(e);
}
})
.catch(error => {
console.log(error);
});
}
}
})
.catch(error => {
console.log(error);
});
}
})
.catch(error => {
console.log(error);
});

Selenium (Python)

Python + Selenium, belirli bir klasörde bulunan profilleri başlatma ve birkaç siteyi açma:

from time import sleep
import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
address = "127.0.0.1" # Yerel API IP adresi (aynı ağdaki başka bir bilgisayardan çalışıyorsanız veya yönlendirici ayarlarında bağlantı noktası açıksa, yerel API'ye uzaktan erişebilir ve bu adresi değiştirmeniz gerekebilir)
port_from_settings_browser = '25325' # Yerel API bağlantı noktası (program ayarlarında bulunabilir)
chrome_driver_path = "chromedriver.exe" # v110 için chromedriver yolunu belirtin
ser = Service(chrome_driver_path)
chrome_options = Options()
list_response = requests.get(f'http://{address}:{port_from_settings_browser}/list').json()['data'] # Profil listesini almak için yerel API'ye istek gönderiyoruz
profile_id = ''
for key, value in list_response.items(): # Profil listesini dolaşıp tek tek başlatıyoruz
if value['folder'] == 'test': # Sadece belirli profilleri başlatmak için burada kontrol ekleyebilirsiniz (bu örnekte 'test' klasöründe bulunan profilleri başlatıyoruz)
profile_id = key
if value['status'] == 'Available': # Profil başlatılmadıysa, profil başlatılır ve hata ayıklama bağlantı noktası alınır
start_profile_response = requests.get(f'http://{address}:{port_from_settings_browser}/profile/start/{profile_id}', timeout=5).json()['data']
debug_port = start_profile_response['debug_port']
if value['status'] == 'Started': # Profil başlatıldıysa, hata ayıklama bağlantı noktasını doğrudan kullanırız
debug_port = value['debug_port']
if value['status'] == 'Locked': # Profil kilitliyse, atlarız
continue
if debug_port: # Tarayıcının bağlantı noktası var mı diye kontrol ediyoruz (WebEngine profillerinde bağlantı noktaları olmadığından, bunları hemen kapatıyoruz)
chrome_options.debugger_address = f'{address}:{debug_port}'
driver = webdriver.Chrome(service=ser, options=chrome_options)
driver.get("https://whoer.net/") # Aktif sekmede whoer.net'i açıyoruz
driver.switch_to.new_window('tab') # Yeni bir sekme oluşturup ona geçiyoruz
driver.get(url='https://browserleaks.com/js') # Aktif sekmede browserleaks.com/js'i açıyoruz
# Buraya istediğiniz başka eylemleri ekleyebilirsiniz
sleep(5) # 5 saniye bekliyoruz
requests.get(f'http://{address}:{port_from_settings_browser}/profile/stop/{profile_id}') # Profili durduruyoruz