---
title: "Browser Use ile Proxy Kullanımı: Yapay Zekâ Tarayıcı Ajanı"
description: "Browser Use, dil modeline Python'dan gerçek bir tarayıcı kullandırır. Ajanı parolalı proxy ile kurmayı, çıkış IP'si kontrolünü ve site sınırını anlatıyoruz."
url: https://proxynet.io/tr/blog/browser-use-proxy
date: 2026-10-05
author: "Acar Diveroli"
category: "Entegrasyon, Yapay Zekâ"
lang: tr
---

# Browser Use ile Proxy Kullanımı: Yapay Zekâ Tarayıcı Ajanı

Browser Use ajanınız, dizüstü bilgisayarınızdan çalışırken test mağazanızda sorunsuzca deneme siparişi veriyor. Aynı görevi bulut sunucusuna taşıdığınızda site, başka bir ülkedeki bir veri merkezi adresinden açılıyor: mağaza farklı bir para birimi gösteriyor, yalnızca tanıdığı IP'leri içeri alan test ortamı güvenlik duvarınız da ajanı geri çeviriyor. Proxy'yi `http://user:pass@pr.proxynet.io:8000` diye ekliyorsunuz ve bu kez hiçbir sayfa açılmıyor, hepsi `net::ERR_NO_SUPPORTED_PROXIES` hatası veriyor.

Bu yazıda Browser Use'un nasıl çalıştığını, kurulumu, kullanıcı adı ve parolayla çalışan proxy'yi, çıkış IP'si kontrolünü, sticky ve rotating oturumları, alan adı sınırını, gizli bilgileri ve insan onayı adımını anlatıyoruz. Tüm betikleri browser-use 0.13.10 ve Python 3.13 ile, parola isteyen yerel bir test proxy'si üzerinden çalıştırdık. Test makinesinde bir LLM API anahtarı olmadığı için modelin cevaplarını önceden yazılmış bir test betiği verdi; tarayıcı, proxy, alan adı filtresi ve gizli bilgilerin maskelenmesi ise gerçekten çalıştı.

> **Not: Kısa cevap**
>
> Browser Use, bir dil modelinin Chromium tabanlı bir tarayıcıyı kullanmasını sağlayan açık kaynaklı bir Python kütüphanesidir (MIT lisansı): model sayfayı okur, tıklama ya da yazma gibi eylemleri seçer, kütüphane de bunları uygular. `uv pip install browser-use` ile kurulur, Chromium `uvx browser-use install` ile indirilir. Proxy tarayıcıya tanımlanır: `Browser(proxy=ProxySettings(server="http://pr.proxynet.io:8000", username="user", password="pass"))`. Kimlik bilgilerini sunucu adresine gömmek de SOCKS5'i parolayla kullanmak da çalışmaz. Çok adımlı görevlerde sticky oturum, parolaların modele hiç ulaşmaması için de `sensitive_data` yer tutucuları kullanın.

## Browser Use nedir?

Browser Use, bir dil modelini tarayıcı ajanına dönüştüren bir Python kütüphanesidir. Görevi sade bir dille yazarsınız; hangi bağlantıya tıklanacağına, nereye ne yazılacağına ve ne zaman kaydırılacağına model karar verir. [GitHub deposu](https://github.com/browser-use/browser-use) projeyi "Agents that use the browser" (tarayıcıyı kullanan ajanlar) diye tanımlar. Kütüphane MIT lisanslıdır; [PyPI](https://pypi.org/project/browser-use/) üzerindeki son sürüm bugün itibarıyla 4 Eylül 2026'da yayımlanan 0.13.10'dur ve Python 3.11 ya da daha yenisini ister.

0.13.10 sürümü Chromium ile doğrudan Chrome DevTools Protocol (CDP) üzerinden iletişim kurar; Playwright bağımlılıkları arasında yer almaz. Model olarak OpenAI, Anthropic ve Google modellerini, yerel bir Ollama sunucusunu ya da Browser Use'un kendi barındırdığı modelleri kullanabilirsiniz. Browser Use Cloud ise barındırılan tarayıcılar sunan ayrı ve ücretli bir hizmettir; bu yazının konusu değildir.

Bir ajanın genel olarak nasıl plan yaptığı ve araç kullandığı [AI Ajanları Nasıl Çalışır?](/tr/blog/how-ai-agents-work) yazımızda, ajanı tarayıcının içine yerleştiren ürünler ise [Yapay Zekâ Tarayıcısı (AI Browser) Nedir, Güvenli mi?](/tr/blog/what-is-an-ai-browser) yazımızda anlatılıyor.

## Browser Use ajanı nasıl çalışır?

Tek bir `agent.run()` çağrısı şu adımlardan geçer:

1. **Tarayıcı açılır.** Her seferinde yeni ve geçici bir profil kullanılır; proxy, Chromium'a açılış parametresi olarak verilir.
2. **Görevdeki adres doğrudan açılır.** Bunun için model çağrılmaz.
3. **Sayfa metne dönüştürülür.** Ajanın kullanabileceği her öğeye bir numara verilir, görünen metin de yanına yazılır. `use_vision=True` (varsayılan) olduğunda bir ekran görüntüsü de eklenir.
4. **Model JSON ile cevap verir:** son adımın değerlendirmesi, kısa bir not, sıradaki hedef ve en fazla beş eylem; örneğin `navigate`, `click`, `input`, `scroll`, `extract` ya da `done`.
5. **Kütüphane eylemleri uygular.** Her yeni adresi alan adı kurallarınızla karşılaştırır ve modelin yer tutucu yazdığı yere gerçek gizli değeri koyar.
6. **Döngü sürer.** Model `done` diyene ya da `max_steps` dolana kadar devam eder.

Alıştırma için yapılmış bir kitap mağazası sitesinde, test modelimize giden tarayıcı durumu (browser state) şu satırları içeriyordu:

```text
[587]<a title=It's Only the Himalayas />
	It's Only the Himalayas
£45.17
[597]<i />
In stock
[604]<button type=submit />
	Add to basket
```

Bu kitabı sepete eklemek için model `{"click": {"index": 604}}` diye cevap verirdi. Sayfa metin olarak geldiği için ajan `use_vision=False` ayarıyla da çalışır; bu ayar hassas sayfaların ekran görüntülerini model sağlayıcısından uzak tutar.

## Browser Use nasıl kurulur?

Resmî hızlı başlangıç rehberi uv kullanır:

```bash
pip install uv
uv venv --python 3.12
source .venv/bin/activate        # Windows: .venv\Scripts\activate
uv pip install browser-use
uvx browser-use install          # Chromium'u indirir
```

Biz uv kullanmadan, Python 3.13 sanal ortamına `pip install browser-use==0.13.10` ile kurduk; bu da sorunsuz çalıştı. Ardından anahtarları betiğinizin yanındaki bir `.env` dosyasına yazın:

```bash
OPENAI_API_KEY=...
PROXY_SERVER=http://pr.proxynet.io:8000
PROXY_USERNAME=user
PROXY_PASSWORD=pass
ANONYMIZED_TELEMETRY=false
```

Son satır önemlidir. Browser Use varsayılan olarak kullanım verisi (telemetri) gönderir; [telemetri sayfasına](https://docs.browser-use.com/open-source/development/monitoring/telemetry) göre bu veri görev talimatlarını, ziyaret edilen adresleri, eylem kayıtlarını ve sonuçları içerebilir. Görevleriniz müşterilerden ya da iç sistemlerden söz ediyorsa telemetriyi kapatın.

Windows test makinesinde iki şey bizi şaşırttı. `executable_path` verilmediğinde Browser Use bilgisayarda kurulu Google Chrome'u seçti; ama günlük profilinizi değil, yeni ve geçici bir profili kullandı. İlk açılışta da biri reklam engelleyici olmak üzere üç eklentiyi doğrudan Chrome Web Mağazası'ndan, proxy'nin dışından indirdi. `enable_default_extensions=False` bu eklentileri kapatır.

## Ajan proxy üzerinden nasıl çalıştırılır?

Proxy, `Browser` nesnesinin bir ayarıdır; ajana da bu tarayıcı verilir. Aşağıdaki betik bir kategori sayfasını açıp üç kitabı okur; trafik yalnızca proxy'den çıkar ve yalnızca tek bir alan adına gider:

```python
"""Bir Browser Use ajanını parolalı proxy üzerinden, tek bir siteyle sınırlı çalıştır."""
import asyncio
import os

from dotenv import load_dotenv

load_dotenv()  # OPENAI_API_KEY, PROXY_* ve ANONYMIZED_TELEMETRY değerlerini .env dosyasından okur

from browser_use import Agent, Browser, ChatOpenAI
from browser_use.browser import ProxySettings

browser = Browser(
    headless=True,
    proxy=ProxySettings(
        server=os.environ["PROXY_SERVER"],  # http://pr.proxynet.io:8000
        username=os.environ["PROXY_USERNAME"],
        password=os.environ["PROXY_PASSWORD"],
    ),
    allowed_domains=["books.toscrape.com"],
    enable_default_extensions=False,
)

agent = Agent(
    task=(
        "https://books.toscrape.com/catalogue/category/books/travel_2/index.html adresini aç "
        "ve ilk üç kitabın adını ve fiyatını listele."
    ),
    llm=ChatOpenAI(model="gpt-4.1-mini"),
    browser=browser,
    use_vision=False,
)

async def main():
    history = await agent.run(max_steps=10)
    print("result:", history.final_result())
    print("pages: ", [u for u in history.urls() if u])
    print("steps: ", history.number_of_steps())

asyncio.run(main())
```

`ProxySettings` paketin üst düzeyinden değil, `browser_use.browser` modülünden içe aktarılır. [Tarayıcı parametreleri sayfası](https://docs.browser-use.com/open-source/customize/browser/all-parameters) dört alan sayar:

| Alan | Ne alır |
|---|---|
| `server` | `http://sunucu:port` ya da `socks5://sunucu:port`, kimlik bilgisi olmadan |
| `username` | Proxy kullanıcı adı (örneğin Endpoint Oluşturucu'nun ürettiği) |
| `password` | Proxy parolası |
| `bypass` | Proxy'ye uğramayacak sunucular, virgülle ayrılır |

Perde arkasında Browser Use, Chromium'u `--proxy-server` parametresiyle başlatır ve proxy'nin `407` kimlik doğrulama isteğine CDP üzerinden kendisi cevap verir. Test proxy'miz kitap sayfası için tam olarak bunu kaydetti (kısaltılmış, zaman damgaları çıkarılmış):

```text
407 CONNECT books.toscrape.com:443 (no credentials)
200 CONNECT books.toscrape.com:443 user=user
```

Proxy kullanıcı adı ve parolası, modele giden hiçbir metinde görünmedi.

## Proxy adresine user:pass yazılınca neden çalışmaz?

Çünkü Chromium, proxy ayarlarına gömülü kimlik bilgilerini kullanmaz; [Chromium'un proxy belgesi](https://chromium.googlesource.com/chromium/src/+/HEAD/net/docs/proxy.md) bunu açıkça yazar. Testimizde `server="http://user:pass@…"` yazıp ayrı alanları boş bıraktığımızda her gezinme `net::ERR_NO_SUPPORTED_PROXIES` ile bitti. Kimlik bilgilerini `username` ve `password` alanlarına yazın.

SOCKS5'te sınır başkadır: Chromium, SOCKS5 için hiçbir kimlik doğrulama yöntemini desteklemez. SOCKS5 test sunucumuz, tarayıcının yalnızca "kimlik doğrulamasız" yöntemi önerdiğini gördü; sayfa da `ERR_SOCKS_CONNECTION_FAILED` hatası verdi. SOCKS5 kullanacaksanız sunucunuzun IP'sini paneldeki IP whitelist'e ekleyin (en fazla 10 adres) ve Endpoint Oluşturucu'nun gösterdiği SOCKS5 portunu kullanıcı adı olmadan kullanın. Bu durumda DNS çözümlemesi proxy tarafında yapılır. İki giriş yöntemi [Proxy Kimlik Doğrulama: User:Pass ve IP Whitelist](/tr/blog/proxy-authentication-methods) yazımızda, iki protokol ise [SOCKS ve HTTP Proxy Farkı](/tr/blog/socks-vs-http-proxy) yazımızda karşılaştırılıyor.

## Ajanın çıkış IP'si nasıl kontrol edilir?

İlk gerçek görevden önce, işin içine model katmadan kontrol edin. Aşağıdaki betik aynı `ProxySettings` ayarıyla ziyaretçinin IP'sini gösteren bir sayfa açar ve sitenin gördüğünü yazdırır:

```python
"""Herhangi bir ajan çalışmadan önce proxy üzerinden bir IP gösterme sayfası aç."""
import asyncio
import os

from browser_use import Browser
from browser_use.browser import ProxySettings

async def main():
    browser = Browser(
        headless=True,
        proxy=ProxySettings(
            server=os.environ["PROXY_SERVER"],
            username=os.environ["PROXY_USERNAME"],
            password=os.environ["PROXY_PASSWORD"],
        ),
    )
    await browser.start()
    try:
        page = await browser.new_page("https://httpbin.org/ip")
        await asyncio.sleep(2)  # sayfanın yüklenmesini bekle
        print(await page.evaluate("() => document.body.innerText"))
    finally:
        await browser.kill()

asyncio.run(main())
```

Betik, httpbin'in `origin` alanı taşıyan JSON cevabını yazdırır. Bir Proxynet uç noktası kullanıyorsanız bu değer sizin IP'niz değil, çıkış IP'sidir. Betiği iki kez çalıştırın: rotating bir kullanıcı adı iki farklı adres gösterebilir, sticky bir kullanıcı adı ise iki seferde de aynı adresi gösterir.

Proxy kaydımızda Chrome'un Google hizmetlerine giden kendi istekleri ve Browser Use'un boş açılış sayfasındaki logonun isteği de göründü. Proxy trafiğini GB başına ödüyorsanız bunlar da sayaca yazılır.

## Rotating mi sticky mi: ajana hangi oturum gerekir?

Proxy tarayıcıya ait olduğu için bir görevin bütün adımları aynı proxy adresinden çıkar. Değişen, o adresin arkasındaki çıkış IP'sidir.

| Görev | Oturum | Neden |
|---|---|---|
| Giriş yapıp birkaç sayfada işlem yapmak | Sticky, 10-30 dakika | Birçok site oturumu IP'ye bağlar; görevin ortasında adres değişirse yeniden giriş istenebilir |
| Her çalıştırmada tek ve bağımsız bir sayfa okumak | Rotating | Her çalıştırma yeni bir çıkış alabilir; taşınacak bir şey yoktur |
| Aynı anda birkaç ajan | Her ajana bir `Browser` | Her tarayıcının kendi proxy ayarı ve oturumu olur |
| Kendi sistemlerinizin izin listesindeki sabit bir adres | Static ISP | IP günlerce aynı kalır |

Proxynet'te rotating ya da sticky oturumu, ülkeyi ve şehri Endpoint Oluşturucu'da seçersiniz; sticky süresi 1 ile 60 dakika arasındadır. Oluşturucunun ürettiği kullanıcı adı bu seçimleri zaten taşır; onu `PROXY_USERNAME` değerine olduğu gibi yapıştırın. Sticky süresini en uzun görevinizden biraz uzun tutun. İlgili ürünler: [Sticky Proxy](https://proxynet.io/tr/sticky-proxy), [Rotating Proxy](https://proxynet.io/tr/rotating-proxy), [ISP Proxy](https://proxynet.io/tr/static-isp-residential-proxy) ve bir ülkedeki ev bağlantısı görünümü gereken kontroller için [Residential Proxy](https://proxynet.io/tr/residential-proxy). Rotasyonun işleyişi [IP Rotasyonu Nedir ve Nasıl Çalışır?](/tr/blog/ip-rotation-explained) yazımızda anlatılıyor.

## Ajanın gidebileceği yerler nasıl sınırlanır?

`allowed_domains` bir kalıp listesi alır: `example.com`, alt alan adları için `*.example.com`, iki şema için `http*://example.com`. Üst düzey alan adında joker karakter kabul edilmez. `prohibited_domains` ters yönde çalışır; ikisi birlikte verilirse izin listesi geçerli olur.

Yalnızca yerel test mağazamıza izin verdik ve test modelimizle listenin dışına iki yoldan çıkmayı denedik. Başka bir sunucuya doğrudan `navigate` denemesinde model şu cevabı aldı, açık sayfa da `about:blank` oldu:

```text
Navigation failed: Navigation to http://partner.test:28140/ blocked by security policy
```

Mağazadaki bir bağlantının ziyaretçiyi aynı sunucuya yönlendirmesi de `about:blank` ile sonuçlandı ve model o sayfanın metnini hiç görmedi. Ancak test sitesinin kendi kaydı, kontrol devreye girip sayfaları değiştirmeden önce tarayıcının liste dışındaki iki sayfayı da istediğini gösterdi; izinli bir sayfadaki, liste dışı sunucudan gelen bir görsel de normal biçimde yüklendi. Kısacası 0.13.10'da bu filtre, tarayıcının ne gönderdiğini değil, ajanın neyi okuyup neyin üzerinde işlem yaptığını denetler.

Gerçek bir sınır için giden trafiği ajanın dışında kısıtlayın: bir güvenlik duvarı ya da proxy tarafında izin listesi, ayrı bir konteyner ya da kullanıcı hesabı, iç adreslere erişimin kapalı olması. Playwright MCP'nin origin bayrakları için de aynı uyarı geçerlidir; ayrıntısı [Playwright MCP Nedir? Kurulum ve Proxy Ayarları](/tr/blog/playwright-mcp) yazımızda. Genel yaklaşımı [LLM'e Güvenli Web Erişimi: Hız Sınırı ve İzinler](/tr/blog/llm-safe-web-access) yazımızda anlattık.

## Kimlik bilgileri modelden nasıl uzak tutulur?

Görev metnine asla parola yazmayın. Görev metni her adımda model sağlayıcısına gider ve kapatmadıysanız telemetriye de düşer. Browser Use'ta bunun için bir yer tutucu düzeneği var: `sensitive_data`. Gerçek değerleri kodda verirsiniz, model yalnızca `x_user` ve `x_pass` gibi adları görür; kütüphane gerçek değeri, model cevap verdikten sonra alana kendisi yazar.

Testimizde modelin eylemi `<secret>x_pass</secret>` biçimindeydi, kayıtta "Typed <sensitive>" satırı çıktı; sayfa kullanıcı adını geri yazdığında da modele giden metin `Signed in as <secret>x_user</secret>` oldu. Gerçek değerler modele giden hiçbir metinde görünmedi. Üç alışkanlık bu düzeneği tamamlar:

- **Gizli bilgileri bir alan adına bağlayın**, yer tutucu yalnızca ait olduğu sitede doldurulsun.
- **Ekran görüntüsünün değeri gösterebileceği sayfalarda `use_vision=False` kullanın.**
- **Dış sayfaları okuyan görevlerde ajana günlük Chrome profilinizi vermeyin** (`Browser.from_system_chrome()`): o profildeki her açık oturum ajanın erişimine girer.

## İnsan onayı adımı nasıl eklenir?

Dolaylı prompt injection, sayfadaki bir metnin model tarafından talimat sanılmasıdır. [OWASP'ın LLM01 maddesi](https://genai.owasp.org/llmrisk/llm01-prompt-injection/) yüksek riskli eylemler için insan onayını savunma yolları arasında sayar. Browser Use, `register_new_step_callback` işlevini model eylemlerini seçtikten sonra ve bu eylemler uygulanmadan önce çağırır; bu yüzden işlev ajanı durdurabilir:

```python
"""İzin listesi, gizli bilgi yer tutucuları ve insan onayı adımı olan bir Browser Use ajanı."""
import asyncio
import os

from dotenv import load_dotenv

load_dotenv()

from browser_use import Agent, Browser, ChatOpenAI
from browser_use.browser import ProxySettings

SITE = "https://shop.example.com"
READ_ONLY = {"navigate", "scroll", "find_text", "extract", "screenshot", "go_back", "wait", "done"}

browser = Browser(
    headless=True,
    proxy=ProxySettings(
        server=os.environ["PROXY_SERVER"],
        username=os.environ["PROXY_USERNAME"],
        password=os.environ["PROXY_PASSWORD"],
    ),
    allowed_domains=["shop.example.com"],
    enable_default_extensions=False,
)

def approve(browser_state, model_output, step):
    """Model eylemlerini seçtikten sonra, eylemler uygulanmadan önce çalışır."""
    planned = [action.model_dump(exclude_none=True) for action in model_output.action]
    if all(next(iter(a)) in READ_ONLY for a in planned):
        return
    print(f"Step {step} wants to run: {planned}")
    if input("Allow? [y/N] ").strip().lower() != "y":
        agent.stop()

agent = Agent(
    task=f"{SITE}/login adresinde x_user kullanıcı adı ve x_pass parolasıyla giriş yap, sonra iş ortağı teklifini aç.",
    llm=ChatOpenAI(model="gpt-4.1-mini"),
    browser=browser,
    sensitive_data={"http*://shop.example.com": {"x_user": os.environ["SHOP_USER"], "x_pass": os.environ["SHOP_PASS"]}},
    use_vision=False,
    register_new_step_callback=approve,
)

async def main():
    history = await agent.run(max_steps=8)
    print("done:  ", history.is_done())
    print("errors:", [e for e in history.errors() if e])

asyncio.run(main())
```

Betiği alan adını değiştirerek yerel test mağazamızda çalıştırdık. Önce giriş adımı onay istedi; "y" yazınca ajan iki değeri de yazıp düğmeye tıkladı. Sonraki bir tıklama yeniden onay istedi; "n" yazınca kayıtta "Agent stopping" satırı çıktı, tıklama hiç uygulanmadı ve `is_done()` `False` döndü. Salt okuma kümesinin dışındaki her eylem, metin yazmak da dahil, artık bir insanın onayını bekler.

## Browser Use mu, Playwright MCP mi?

İkisi de modele tarayıcı kullandırır; fark, döngüyü kimin yürüttüğündedir.

| | Browser Use | Playwright MCP |
|---|---|---|
| Ajan döngüsünü kim yürütür | Kütüphane, sizin Python kodunuzda | Zaten kullandığınız asistan (Claude Code, Cursor) |
| Parolalı proxy | `ProxySettings` alanları | Yapılandırma dosyasında `launchOptions.proxy` |
| Alan adı sınırı | `allowed_domains` | `--allowed-origins` |
| Uygun olduğu iş | Kendi servisinizin içindeki ajanlar | Kodlama asistanıyla yapılan anlık işler |

Playwright MCP'nin kurulumunu ve bayraklarını [Playwright MCP Nedir? Kurulum ve Proxy Ayarları](/tr/blog/playwright-mcp) yazımızda anlattık.

## Kullanım alanları

- **Kendi sitenizde yerelleştirme kontrolü:** bir ülkeden gelen ziyaretçinin hangi dili, para birimini ve çerez bildirimini gördüğünü denetlemek ([yerelleştirme](/tr/localization)).
- **Kendi uygulamanızda keşif amaçlı test:** test ortamındaki kayıt ya da ödeme akışını farklı konumlardan yürütmek ([uygulama testi](/tr/app-testing)).
- **JavaScript ile yüklenen bir sayfadan tek seferlik okuma:** tarayıcıda oluşan herkese açık bir sayfadan birkaç değer almak ([statik ve dinamik sayfalar](/tr/blog/static-vs-dynamic-pages)). Düzenli işlerde sade bir betik daha ucuzdur ([Playwright ile proxy kullanımı](/tr/blog/playwright-proxy)).
- **Model için tarayıcı yerine temiz metin:** ajanın yalnızca okuması gerekiyorsa [Crawl4AI Nedir? Kurulum ve Proxy Ayarları](/tr/blog/crawl4ai-proxy) yazımıza bakın.

Sizin adınıza gezinen bir ajanın trafiği de otomatik trafiktir. Browser Use 0.13.10 robots.txt dosyasını okumaz (pakette buna dair kod bulamadık); bu yüzden sitenin [robots.txt](/tr/blog/robots-txt) dosyasını ve kullanım şartlarını kendiniz okuyun, varsa resmî API'yi kullanın, az sayıda sayfayla ve insan hızında ilerleyin, site hayır dediğinde durun. Sitelerin otomatik ziyaretçiyi neden ayırt etmeye çalıştığını [AI Alışveriş Ajanları Neden Sitelerde Engelleniyor?](/tr/blog/ai-shopping-agents-blocked) yazımızda anlattık. Browser Use Cloud için duyurulan gizlenme (stealth) ve CAPTCHA özellikleri bu yazının kapsamı dışındadır ve bunları önermiyoruz.

## Sık yapılan hatalar

| Gördüğünüz | Neden | Yapılacak |
|---|---|---|
| `net::ERR_NO_SUPPORTED_PROXIES` | Kimlik bilgileri `server` adresine yazılmış | Bilgileri `username` ve `password` alanlarına taşıyın |
| `net::ERR_TOO_MANY_RETRIES` | Proxy kullanıcı adı ya da parolası yanlış; proxy `407` döndürmeyi sürdürüyor | Kimlik bilgilerini panelden yeniden kopyalayın |
| `net::ERR_PROXY_CONNECTION_FAILED` | Sunucu ya da port yanlış ya da giden trafik engelleniyor | Aynı adresi cURL ile deneyin |
| `ERR_SOCKS_CONNECTION_FAILED` | `socks5://` parolayla kullanılmış | HTTP uç noktasını ya da IP whitelist ile SOCKS5'i kullanın |
| `blocked by security policy` | Adres `allowed_domains` dışında | Alan adını listeye ekleyin ya da engelli bırakın |
| Ajan görevin ortasında yeniden giriş yapıyor | Rotating çıkış, görev sürerken IP'yi değiştirdi | Sticky oturum kullanın |

İki alışkanlık hiçbir hata vermeden sorun çıkarır: `allowed_domains` listesini güvenlik duvarı saymak ve sürümü sabitlememek. API sürümler arasında değişti; test ettiğiniz sürümü sabitleyin (`browser-use==0.13.10`) ve yükseltmeden önce sürüm notlarını okuyun.

## Karar rehberi

| İhtiyaç | Öneri |
|---|---|
| Proxy üzerinden ilk ajan çalıştırması | HTTP uç noktası, kullanıcı adı ve parolayla `ProxySettings`; ardından IP kontrol betiği |
| Giriş içeren çok adımlı görev | Görevden uzun bir sticky oturum |
| Birbirinden bağımsız tek sayfalık çalıştırmalar | Rotating oturum |
| Ajanı tek bir sitede tutmak | `allowed_domains`, ek olarak ajanın dışında giden trafik için izin listesi |
| Bir şeyi değiştiren eylemler | `agent.stop()` çağırabilen bir onay işlevi |

## Sıkça sorulan sorular

### Browser Use ücretsiz mi?

Kütüphane MIT lisansıyla ücretsizdir. Model çağrılarını (adım başına en az bir tane) ve proxy trafiğini ödersiniz. Browser Use Cloud ve barındırılan modelleri ayrıca ücretlendirilir.

### Browser Use hâlâ Playwright kullanıyor mu?

Tarayıcıyı yönetmek için kullanmıyor. 0.13.10 sürümü Chromium'u Chrome DevTools Protocol üzerinden yönetir; kurulum komutu Chromium'u Playwright'ın indirme aracıyla indirir, kaydedilen oturum durumu da Playwright'ın dosya biçimini kullanır.

### API yerine yerel bir model kullanabilir miyim?

Browser Use'un desteklenen modeller sayfası, yerel bir Ollama sunucusu için `ChatOllama(model="llama3.1:8b")` örneğini veriyor. Yerel modeli biz test etmedik.

### İki ajan aynı anda farklı ülkelerden çıkabilir mi?

Evet; her biri kendi `ProxySettings` ayarına sahip iki ayrı `Browser` nesnesiyle. Bir tarayıcının bütün sekmeleri tek bir proxy kullanır.

### Browser Use robots.txt dosyasına uyar mı?

Kendiliğinden uymaz; 0.13.10'da robots.txt kontrolü yok. Ajana bir site vermeden önce dosyayı kendiniz okuyun.

### Proxy, sitelerin ajanımı engellemesini önler mi?

Hayır. Proxy yalnızca isteğin hangi adresten çıktığını değiştirir; tarayıcının davranışı ve istek hızı aynı kalır. Kalıcı çözüm yavaş bir tempo, izin verilen sayfalar ve varsa resmî API'dir.

## Özet

Browser Use, bir dil modeline gerçek bir Chromium tarayıcısı verir ve ajan döngüsünü sizin Python kodunuzda yürütür. Proxy'yi tarayıcıya `ProxySettings` ile ve ayrı `username`, `password` alanlarıyla tanımlayın; adrese gömülü kimlik bilgileri de parolalı SOCKS5 de Chromium'da çalışmaz. İlk görevden önce çıkış IP'sini kontrol edin, giriş içeren her iş için sticky oturum kullanın ve `allowed_domains` listesini ağ sınırı değil, ajan için bir filtre olarak görün. Gizli bilgileri `sensitive_data` ile verin, telemetriyi kapatın ve bir şeyi değiştiren eylemlerin önüne insan onayı koyun. Ajanınıza uygun çıkış noktalarını [proxy hizmetlerimizde](/tr/proxy) bulabilirsiniz.
