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
{ "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
{ "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
{ "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}
{ "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
{ "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.
{ "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
{ "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}
{ "code": 0, "status": "başarılı", "data": {}}
Profil Silme
- Yol:
/profil/sil/<profilID>
- Metod: GET
Açıklama: Seçilen <profilID>
ile profili siler.
{ "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.
{ "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>
{ "code": 0, "status": "success", "data": {}}
Profil Çerezleri
- Yol:
/profil/çerezler/<profilID>
- Metod: GET
Açıklama: Seçilen <profilID>
ile profildeki çerezleri talep eder.
{ "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
{ "profiles": ["9b24cd2604d1b8260123242ab1f30c", "f4cbe3c89618bfc9647ba8a47c13f6"]}
{ "code": 0, "status": "başarılı", "data": {}}
Yerel Yapma
- Yol:
/profil/yerel
- Metod: POST
Açıklama: Seçilen profilleri yerel yapar.
Format: JSON
{ "profiles": ["9b24cd2604d1b8260123242ab1f30c", "f4cbe3c89618bfc9647ba8a47c13f6"], "group": "test"}
{ "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
{ "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
{ "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
{ "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
{ "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/checkconnection/<profileID>
- Method: GET
Description: Checks the connection in the profile with the selected
Format: JSON
{ "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
{ "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
{ "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
{ "name": "Proxy1", "type": "http", "host": "127.0.0.1", "port": "2222", "login": "12345", "password": "12345", "ipchangelink": ""}
{ "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
{ "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
{ "name": "Proxy1", "type": "http", "host": "127.0.0.1", "port": "2222", "login": "12345", "password": "12345", "ipchangelink": ""}
{ "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; // Portconst ip = '127.0.0.1'; // Yerel IPconst 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 sleepimport requestsfrom selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsfrom 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 belirtinser = 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önderiyoruzprofile_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