social-agent-cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,686 @@
1
+ # Instagram Platform Bilgisi
2
+
3
+ > Instagram, bot tespiti konusunda en agresif sosyal medya platformudur.
4
+ > Her otomasyon adiminda ekstra dikkatli olunmalidir.
5
+
6
+ ---
7
+
8
+ ## 1. URL Yapisi
9
+
10
+ | Sayfa | URL | Aciklama |
11
+ |-------|-----|----------|
12
+ | Ana Sayfa (Feed) | `https://www.instagram.com/` | Ana akis |
13
+ | Profil | `https://www.instagram.com/{USERNAME}/` | Kullanici profil sayfasi |
14
+ | Profil (Reels) | `https://www.instagram.com/{USERNAME}/reels/` | Kullanicinin reels'leri |
15
+ | Profil (Tagged) | `https://www.instagram.com/{USERNAME}/tagged/` | Etiketlenen gonderiler |
16
+ | Profil (Saved) | `https://www.instagram.com/{USERNAME}/saved/` | Kaydedilen gonderiler (sadece kendi hesabin) |
17
+ | Kesfet | `https://www.instagram.com/explore/` | Kesfet sayfasi |
18
+ | Kesfet (Etiketler) | `https://www.instagram.com/explore/tags/{HASHTAG}/` | Hashtag arama |
19
+ | Reels | `https://www.instagram.com/reels/` | Reels akisi |
20
+ | Hikayeler | `https://www.instagram.com/stories/{USERNAME}/` | Kullanicinin hikayeleri |
21
+ | Hikaye (Tekil) | `https://www.instagram.com/stories/{USERNAME}/{STORY_ID}/` | Belirli bir hikaye |
22
+ | DM (Direkt Mesaj) | `https://www.instagram.com/direct/inbox/` | Mesaj kutusu |
23
+ | DM (Konusma) | `https://www.instagram.com/direct/t/{THREAD_ID}/` | Belirli bir konusma |
24
+ | Post (Gonderi) | `https://www.instagram.com/p/{SHORTCODE}/` | Tekil gonderi (foto/carousel) |
25
+ | Reel (Tekil) | `https://www.instagram.com/reel/{SHORTCODE}/` | Tekil reel |
26
+ | IGTV | `https://www.instagram.com/tv/{SHORTCODE}/` | IGTV videosu (artik fazla kullanilmiyor) |
27
+ | Ayarlar | `https://www.instagram.com/accounts/edit/` | Profil duzenleme |
28
+ | Sifre Degistirme | `https://www.instagram.com/accounts/password/change/` | Sifre ayarlari |
29
+ | Gizlilik | `https://www.instagram.com/accounts/privacy_and_security/` | Gizlilik ayarlari |
30
+ | Aktivite | `https://www.instagram.com/accounts/activity/` | Hesap aktivitesi |
31
+ | Giris | `https://www.instagram.com/accounts/login/` | Giris sayfasi |
32
+ | Bildirimler | `https://www.instagram.com/accounts/activity/` | Bildirim sayfasi (web'de sinirli) |
33
+
34
+ ---
35
+
36
+ ## 2. Bilinen Selectorler
37
+
38
+ > ONEMLI: Instagram React tabanlidir ve class name'ler dinamik/obfuscated olarak uretilir.
39
+ > Bu yuzden class-based selectorler GUVENILMEZ. data-testid, aria-label, role ve yapisal selectorler tercih edilmelidir.
40
+ > Instagram selectorlderi siklikla degisir, asagidakiler referans noktasidir.
41
+
42
+ ### 2.1 Navigasyon
43
+
44
+ | Eleman | Selectorler | Notlar |
45
+ |--------|-------------|-------|
46
+ | Ana Sayfa | `a[href='/']`, `svg[aria-label='Home']`, `svg[aria-label='Ana Sayfa']` | Dile gore degisir |
47
+ | Arama | `a[href='/explore/']`, `svg[aria-label='Search']`, `svg[aria-label='Ara']` | Arama ikonu |
48
+ | Kesfet | `a[href='/explore/']` | Bazi durumlarda Arama ile ayni |
49
+ | Reels | `a[href='/reels/']`, `svg[aria-label='Reels']` | |
50
+ | Mesajlar | `a[href='/direct/inbox/']`, `svg[aria-label='Messenger']` | |
51
+ | Bildirimler | `svg[aria-label='Notifications']`, `svg[aria-label='Bildirimler']` | Kalp ikonu |
52
+ | Yeni Gonderi | `svg[aria-label='New post']`, `svg[aria-label='Yeni gonderi']` | "+" ikonu |
53
+ | Profil | `a[href='/{USERNAME}/']` , `img[alt*='profil']` | Kullanici avatari |
54
+ | Daha Fazla | `svg[aria-label='Settings']`, `[aria-label='Ayarlar']` | Hamburger menu (sol alt) |
55
+
56
+ ### 2.2 Gonderi Olusturma (Create Post)
57
+
58
+ Instagram'da gonderi olusturma cok adimli bir modal akisidir:
59
+
60
+ ```
61
+ Adim 1: Olusturma butonuna tikla
62
+ - svg[aria-label='New post'] veya svg[aria-label='Yeni gonderi']
63
+ - Sidebar'daki "+" ikonu
64
+
65
+ Adim 2: Dosya yukle modal'i acilir
66
+ - "Bilgisayarindan sec" / "Select from computer" butonu
67
+ - button: icerisinde "Bilgisayarindan sec" veya "Select from computer" metni
68
+ - input[type='file'][accept*='image'] (gizli file input)
69
+ - NOT: File input'a dogrudan dosya path'i set edilebilir (Playwright setInputFiles)
70
+
71
+ Adim 3: Kirpma/Duzenleme ekrani
72
+ - "Ileri" / "Next" butonu: button icerisinde "Ileri" veya "Next"
73
+ - Aspect ratio butonlari: Orijinal, 1:1, 4:5, 16:9
74
+ - Carousel'e ek foto ekleme: Sag alttaki "+" ikonu
75
+
76
+ Adim 4: Filtre/Duzenleme ekrani
77
+ - "Ileri" / "Next" butonu: button icerisinde "Ileri" veya "Next"
78
+ - Filtre secenekleri: Normal, Clarendon, Gingham vb.
79
+
80
+ Adim 5: Bilgi ekleme ekrani
81
+ - Aciklama (Caption) alani: textarea[aria-label='Write a caption...'] veya textarea[aria-label*='aciklama']
82
+ - Konum ekleme: "Konum ekle" / "Add location" input'u
83
+ - Kisi etiketleme: "Kisileri etiketle" / "Tag people"
84
+ - Alt metin: "Erisilebilirlik" / "Accessibility" bolumu
85
+ - "Paylas" / "Share" butonu: button icerisinde "Paylas" veya "Share"
86
+ ```
87
+
88
+ ### 2.3 Hikaye (Story) Olusturma
89
+
90
+ ```
91
+ Adim 1: Profil resminin yanindaki "+" isaretine tikla
92
+ - Veya: Sol ustteki "Hikayen" / "Your story" linkine tikla
93
+ - a[href='/stories/creation/'] (bazi versiyonlarda)
94
+
95
+ Adim 2: Dosya yukle
96
+ - input[type='file'] ile dosya yuklenir
97
+ - Veya "Galerinden sec" butonu
98
+
99
+ Adim 3: Duzenleme ekrani
100
+ - Metin ekleme, sticker, cizim araclari
101
+ - "Hikayene paylas" / "Share to your story" butonu
102
+
103
+ Adim 4: Paylasim
104
+ - "Paylas" / "Share" butonu
105
+ ```
106
+
107
+ ### 2.4 Feed Etkilesimleri
108
+
109
+ | Eleman | Selector | Notlar |
110
+ |--------|----------|-------|
111
+ | Begeni (Like) | `svg[aria-label='Like']`, `svg[aria-label='Begen']`, `span[class] > div > svg[aria-label*='ike']` | Kalp ikonu, dolu ise zaten begenilmis |
112
+ | Begeniyi Kaldir (Unlike) | `svg[aria-label='Unlike']`, `svg[aria-label='Begeniyi kaldir']` | Dolu kirmizi kalp |
113
+ | Yorum | `svg[aria-label='Comment']`, `svg[aria-label='Yorum']` | Balon ikonu |
114
+ | Yorum Yazma Alani | `textarea[aria-label='Add a comment…']`, `textarea[placeholder*='yorum']`, `form textarea` | Post altindaki textarea |
115
+ | Yorum Gonder | `button[type='submit']` (form icindeki), `div[role='button']` icerisinde "Paylas/Post" | |
116
+ | Paylasma (Share/Send) | `svg[aria-label='Share Post']`, `svg[aria-label='Gonderiyi paylas']` | Ucak ikonu |
117
+ | Kaydetme (Save/Bookmark) | `svg[aria-label='Save']`, `svg[aria-label='Kaydet']` | Yer imi ikonu |
118
+ | Kaydedilmis (Saved) | `svg[aria-label='Remove']`, `svg[aria-label='Kaldir']` | Dolu yer imi |
119
+ | Uc Nokta Menusu | `svg[aria-label='More options']`, `svg[aria-label='Diger secenekler']` | "..." ikonu |
120
+ | Carousel Ileri | `button[aria-label='Next']`, `button[aria-label='Sonraki']` | Saga kaydir |
121
+ | Carousel Geri | `button[aria-label='Go back']`, `button[aria-label='Geri don']` | Sola kaydir |
122
+
123
+ ### 2.5 Profil Sayfasi
124
+
125
+ | Eleman | Selector | Notlar |
126
+ |--------|----------|-------|
127
+ | Takip Et | `button:has-text('Follow')`, `button:has-text('Takip Et')` | |
128
+ | Takip Ediliyor | `button:has-text('Following')`, `button:has-text('Takip Ediliyor')` | Takibi birak icin tiklanir |
129
+ | Takibi Birak (onay) | `button:has-text('Unfollow')`, `button:has-text('Takibi birak')` | Modal'da onay butonu |
130
+ | Mesaj Gonder | `button:has-text('Message')`, `button:has-text('Mesaj')` | DM'e yonlendirir |
131
+ | Gonderi Sayisi | `a[href='/{USERNAME}/'] span` veya `li:first-child span` | |
132
+ | Takipci Sayisi | `a[href='/{USERNAME}/followers/'] span` | |
133
+ | Takip Sayisi | `a[href='/{USERNAME}/following/'] span` | |
134
+ | Post Grid | `article a[href*='/p/']` | Post'lara link |
135
+ | Bio | `div.-vDIg span`, `header section > div` | Yapisal olarak bulunmali |
136
+ | Profil Resmi | `header img[alt*='profil']`, `img[data-testid='user-avatar']` | |
137
+
138
+ ### 2.6 Hikaye Izleme
139
+
140
+ | Eleman | Selector | Notlar |
141
+ |--------|----------|-------|
142
+ | Hikaye Halkasi | `canvas` (profilin etrafindaki renkli halka), `div[role='button'] img` | Feed'in ustunde |
143
+ | Sonraki Hikaye | Ekranin sag tarafina tikla veya `button[aria-label='Next']` | |
144
+ | Onceki Hikaye | Ekranin sol tarafina tikla veya `button[aria-label='Go Back']` | |
145
+ | Hikaye Kapat | `button[aria-label='Close']`, `svg[aria-label='Close']` | Sag ust "X" |
146
+ | Hikayeye Yanit | `textarea[placeholder*='reply']`, `textarea[placeholder*='Yanit']` | Alt kisim |
147
+ | Begeni (Hikaye) | Kalp ikonu (sag alt) | |
148
+ | Ilerleme Cubugu | Ekranin ust kismindaki cizgi | Her hikaye icin segment |
149
+
150
+ ### 2.7 Reel Etkilesimleri
151
+
152
+ | Eleman | Selector | Notlar |
153
+ |--------|----------|-------|
154
+ | Begeni | `svg[aria-label='Like']` | Sag taraftaki kalp |
155
+ | Yorum | `svg[aria-label='Comment']` | Sag taraftaki balon |
156
+ | Paylas | `svg[aria-label='Share']` veya `svg[aria-label='Direct']` | Ucak ikonu |
157
+ | Kaydet | `svg[aria-label='Save']` | Yer imi ikonu |
158
+ | Uc Nokta | `svg[aria-label='More']` | Diger secenekler |
159
+ | Ses Ac/Kapat | Video uzerine tikla veya ses ikonu | |
160
+ | Sonraki Reel | Asagi kaydir (scroll down) | |
161
+ | Onceki Reel | Yukari kaydir (scroll up) | |
162
+
163
+ ### 2.8 Modal / Dialog
164
+
165
+ ```
166
+ Genel modal container:
167
+ - div[role='dialog']
168
+ - div[role='presentation'] (overlay/backdrop)
169
+
170
+ Modal kapatma:
171
+ - svg[aria-label='Close'] veya button[aria-label='Close']
172
+ - Escape tusu
173
+
174
+ Onay dialoglari:
175
+ - div[role='dialog'] button (genelde son button "Onayla"dir)
176
+ - "Discard" / "Vazgec", "Cancel" / "Iptal" butonlari
177
+ ```
178
+
179
+ ### 2.9 Giris (Login) Sayfasi
180
+
181
+ | Eleman | Selector | Notlar |
182
+ |--------|----------|-------|
183
+ | Kullanici Adi | `input[name='username']` | |
184
+ | Sifre | `input[name='password']` | |
185
+ | Giris Butonu | `button[type='submit']`, `button:has-text('Log in')` | |
186
+ | Facebook ile Giris | `button:has-text('Log in with Facebook')` | |
187
+ | "Bilgileri Kaydet" | `button:has-text('Save Info')`, `button:has-text('Bilgilerini Kaydet')` | Giris sonrasi modal |
188
+ | "Simdi Degil" | `button:has-text('Not Now')`, `button:has-text('Simdi Degil')` | Bildirim izni vb. |
189
+
190
+ ---
191
+
192
+ ## 3. Tum Etkilesimler (Interactions)
193
+
194
+ ### 3.1 Gonderi Paylasma
195
+
196
+ | Tur | Desteklenen Formatlar | Notlar |
197
+ |-----|----------------------|-------|
198
+ | Foto Gonderi | JPG, PNG, BMP, HEIC | Tek fotograf |
199
+ | Video Gonderi | MP4, MOV | 3-60 saniye (feed), 3-90 saniye (reel) |
200
+ | Carousel | 2-10 adet foto/video | Karistirma (foto+video) mumkun |
201
+ | Reel | MP4, MOV | 9:16, max 90 saniye (web'de 60 sn siniri olabilir) |
202
+ | Hikaye (Story) | Foto veya Video | 24 saat sonra kaybolar, video max 60 saniye |
203
+
204
+ **Gonderi Paylasma Akisi (Web):**
205
+ 1. "+" (Yeni Gonderi) butonuna tikla
206
+ 2. Dosyalari yukle (input[type='file'] ile veya surukle-birak)
207
+ 3. Kirpma ekraninda boyut ayarla (1:1, 4:5, 16:9)
208
+ 4. Carousel ise ek medya ekle
209
+ 5. "Ileri" (Next) tikla
210
+ 6. Filtre/duzenleme ekrani -> "Ileri" (Next) tikla
211
+ 7. Aciklama (caption) yaz, konum ekle, kisileri etiketle
212
+ 8. "Paylas" (Share) tikla
213
+ 9. Modal kapanana kadar bekle (basarili paylasim)
214
+
215
+ ### 3.2 Begenme (Like)
216
+
217
+ - Feed'de: Kalp ikonuna tikla veya gonderi uzerine cift tikla
218
+ - Post sayfasinda: `svg[aria-label='Like']` tikla
219
+ - Reel'de: Sag taraftaki kalp ikonu
220
+ - Hikayede: Kalp ikonu veya mesaj gonder
221
+
222
+ ### 3.3 Yorum Yapma (Comment)
223
+
224
+ 1. Yorum ikonuna tikla (balonvari ikon) -> post sayfasi acilir
225
+ 2. Veya dogrudan post altindaki textarea'ya tikla
226
+ 3. Yorum metnini yaz
227
+ 4. "Paylas" / "Post" butonuna tikla veya Enter'a bas
228
+
229
+ ### 3.4 Takip Etme / Birakma (Follow/Unfollow)
230
+
231
+ **Takip:**
232
+ 1. Profil sayfasina git
233
+ 2. "Takip Et" / "Follow" butonuna tikla
234
+
235
+ **Takibi Birak:**
236
+ 1. Profil sayfasina git
237
+ 2. "Takip Ediliyor" / "Following" butonuna tikla
238
+ 3. Acilan modal'da "Takibi Birak" / "Unfollow" onay butonuna tikla
239
+
240
+ ### 3.5 Kaydetme (Save/Bookmark)
241
+
242
+ - Post altindaki yer imi (bookmark) ikonuna tikla
243
+ - Koleksiyona ekleme secenegi cikar
244
+
245
+ ### 3.6 DM ile Paylasma (Share via DM)
246
+
247
+ 1. Ucak ikonuna tikla (Share/Send)
248
+ 2. Alici kisisini ara ve sec
249
+ 3. "Gonder" / "Send" butonuna tikla
250
+
251
+ ### 3.7 Hikaye Izleme (Story Viewing)
252
+
253
+ 1. Feed ustundeki hikaye halkasina tikla
254
+ 2. Otomatik oynar, saga tiklayarak sonrakine gec
255
+ 3. Kapatmak icin "X" veya Escape
256
+
257
+ ### 3.8 Arama (Search)
258
+
259
+ 1. Arama ikonuna tikla (buyutec)
260
+ 2. Arama alanina metin yaz
261
+ 3. Sonuclardan sec (Hesaplar, Etiketler, Konumlar)
262
+
263
+ ---
264
+
265
+ ## 4. Gorsel ve Video Boyutlari
266
+
267
+ ### 4.1 Feed Gonderileri
268
+
269
+ | Tur | Boyut (px) | Oran | Notlar |
270
+ |-----|-----------|------|-------|
271
+ | Kare | 1080 x 1080 | 1:1 | En yaygin format |
272
+ | Dikey (Portrait) | 1080 x 1350 | 4:5 | Feed'de en cok alan kaplayan, EN COK ONERILEN |
273
+ | Yatay (Landscape) | 1080 x 608 | 1.91:1 | Feed'de kucuk gorunur, onerilmez |
274
+ | Minimum genislik | 320 px | - | Altindakiler otomatik buyutulur |
275
+ | Maksimum genislik | 1080 px | - | Ustundekiler otomatik kucultulur |
276
+
277
+ ### 4.2 Hikaye ve Reel
278
+
279
+ | Tur | Boyut (px) | Oran | Notlar |
280
+ |-----|-----------|------|-------|
281
+ | Hikaye | 1080 x 1920 | 9:16 | Tam ekran dikey |
282
+ | Reel | 1080 x 1920 | 9:16 | Tam ekran dikey |
283
+ | Minimum | 600 x 1067 | 9:16 | Daha dusuk kalite |
284
+
285
+ ### 4.3 Profil Resmi
286
+
287
+ | Tur | Boyut (px) | Notlar |
288
+ |-----|-----------|-------|
289
+ | Profil Foto | 320 x 320 | Daire seklinde kirpilir |
290
+ | Onerilenis | 320 x 320 | Kare format zorunlu |
291
+
292
+ ### 4.4 Carousel (Coklu Gonderi)
293
+
294
+ - Minimum: 2 medya
295
+ - Maksimum: 10 medya
296
+ - Tum medya ayni en-boy oraninda olmali (ilk medyanin orani baz alinir)
297
+ - Foto ve video karisik olabilir
298
+ - Her medya icin ayri alt metin eklenebilir
299
+
300
+ ### 4.5 Video Ozellikleri
301
+
302
+ | Ozellik | Deger |
303
+ |---------|-------|
304
+ | Format | MP4, MOV (H.264 codec onerili) |
305
+ | Maks dosya boyutu | 650 MB (reel), 100 MB (hikaye) |
306
+ | Feed video suresi | 3 - 60 saniye |
307
+ | Reel suresi | 3 - 90 saniye |
308
+ | Hikaye video suresi | 1 - 60 saniye |
309
+ | Kare hizi (FPS) | 30 FPS onerili |
310
+
311
+ ---
312
+
313
+ ## 5. Rate Limiting (Hiz Sinirlamalari)
314
+
315
+ > KRITIK: Instagram'in rate limit'leri kesin degerler degildir.
316
+ > Hesabin yasina, takipci sayisina ve gecmis davranisina gore degisir.
317
+ > Yeni hesaplar cok daha dusuk limitlere sahiptir.
318
+
319
+ ### 5.1 Takip / Takipten Cikma (Follow/Unfollow)
320
+
321
+ | Metrik | Limit | Notlar |
322
+ |--------|-------|-------|
323
+ | Saatlik | ~20-60 | Yeni hesaplar icin ~10-20 |
324
+ | Gunluk | ~100-200 | Yeni hesaplar icin ~50-100 |
325
+ | Iki islem arasi bekleme | 30-90 saniye | MINIMUM, daha fazlasi guvenli |
326
+ | Yeni hesap ilk hafta | ~10-20/gun | Cok dusuk tutulmali |
327
+
328
+ ### 5.2 Begeni (Like)
329
+
330
+ | Metrik | Limit | Notlar |
331
+ |--------|-------|-------|
332
+ | Saatlik | ~150-300 | Hesap yasina bagli |
333
+ | Gunluk | ~500-1000 | Guvenli sinir: ~300/gun |
334
+ | Iki begeni arasi | 10-30 saniye | Rastgele araliklar onemli |
335
+
336
+ ### 5.3 Yorum (Comment)
337
+
338
+ | Metrik | Limit | Notlar |
339
+ |--------|-------|-------|
340
+ | Saatlik | ~10-20 | Cok katil |
341
+ | Gunluk | ~50-100 | Guvenli sinir: ~30/gun |
342
+ | Iki yorum arasi | 60-120 saniye | Kisa yorumlar suphe ceker |
343
+ | Ayni yorum tekrari | YASAK | Farkli yorumlar kullanilmali |
344
+
345
+ ### 5.4 DM (Direkt Mesaj)
346
+
347
+ | Metrik | Limit | Notlar |
348
+ |--------|-------|-------|
349
+ | Saatlik | ~10-20 | Takip etmedigin kisilere daha az |
350
+ | Gunluk | ~50-80 | Spam tespiti cok hassas |
351
+ | Grup mesajlari | Daha dusuk limitler | |
352
+
353
+ ### 5.5 Gonderi Paylasma
354
+
355
+ | Metrik | Limit | Notlar |
356
+ |--------|-------|-------|
357
+ | Gunluk gonderi | ~10-25 | Normal kullanim: 1-3 |
358
+ | Gunluk hikaye | ~50-100 | Normal kullanim: 5-10 |
359
+ | Gunluk reel | ~10-25 | Normal kullanim: 1-3 |
360
+
361
+ ### 5.6 Hashtag Sinirlamalari
362
+
363
+ | Metrik | Limit |
364
+ |--------|-------|
365
+ | Gonderi basina hashtag | Maksimum 30 |
366
+ | Yorum basina hashtag | Maksimum 30 |
367
+ | Onerilen hashtag sayisi | 5-15 arasi (fazlasi spam gorunur) |
368
+ | Yasakli hashtag kullanimi | Shadowban riski! |
369
+
370
+ ---
371
+
372
+ ## 6. Anti-Bot Tespit Mekanizmalari
373
+
374
+ > UYARI: Instagram, TUM sosyal medya platformlari arasinda EN AGRESIF bot tespit sistemine sahiptir.
375
+ > Hesap kalici olarak yasaklanabilir. Asagidaki onlemlere MUTLAKA uyulmalidir.
376
+
377
+ ### 6.1 Tespit Yontemleri
378
+
379
+ Instagram su yontemlerle bot tespiti yapar:
380
+
381
+ 1. **Davranis Analizi**: Cok hizli, cok duzgun (non-random) eylemler
382
+ 2. **Parmak Izi (Fingerprinting)**: Tarayici fingerprint, canvas fingerprint, WebGL
383
+ 3. **IP Analizi**: VPN/proxy/datacenter IP'leri suphe ceker
384
+ 4. **Cihaz Tespiti**: Headless browser tespiti (navigator.webdriver vb.)
385
+ 5. **Eylem Paternleri**: Ayni islemi surekli tekrar etme
386
+ 6. **Zaman Paternleri**: 7/24 aktiflik, gece saatlerinde yogun aktivite
387
+ 7. **Icerik Analizi**: Tekrar eden yorumlar, spam icerigi
388
+ 8. **Cografi Tutarsizlik**: IP konumu ile hesap konumu uyumsuzlugu
389
+ 9. **Mouse/Klavye Paternleri**: Insan-disi mouse hareketleri
390
+ 10. **API Cagrilari**: Anormal GraphQL/REST istekleri
391
+
392
+ ### 6.2 Ceza Turleri
393
+
394
+ | Ceza | Aciklama | Sure |
395
+ |------|----------|------|
396
+ | Gecici Eylem Engeli (Action Block) | Belirli eylemler engellenir (begeni, yorum, takip) | 24 saat - 2 hafta |
397
+ | Soft Ban | Akis sinirlanir, kesfet'te gorunmez | 1-4 hafta |
398
+ | Shadowban | Hashtaglerde gorunmezsiniz | 2-4 hafta |
399
+ | Gecici Hesap Askiya Alma | Hesaba giris engellenir | 24 saat - 1 hafta |
400
+ | Checkpoint Challenge | Dogrulama gerekir (SMS, e-posta) | Anlik |
401
+ | Kalici Ban | Hesap kalici olarak kapatilir | Surekli |
402
+
403
+ ### 6.3 Action Block (Eylem Engeli) Belirtileri
404
+
405
+ Action block olusturuldiginda su mesajlar gorunur:
406
+ - "Try Again Later" / "Daha Sonra Tekrar Dene"
407
+ - "We restrict certain activity to protect our community"
408
+ - "Action Blocked" / "Eylem Engellendi"
409
+ - "Your account has been temporarily blocked"
410
+
411
+ **Action Block Goruldugunde:**
412
+ 1. TUM otomasyonu HEMEN durdur
413
+ 2. En az 24-48 saat hicbir otomasyon yapma
414
+ 3. Bu sure icinde sadece normal (manuel) kullanim yap
415
+ 4. Blok kalktiginda cok yavas baslat (normal limitin %25'i)
416
+
417
+ ### 6.4 Guvenli Otomasyon Kurallari
418
+
419
+ #### Gecikmeler (Delays)
420
+
421
+ | Eylem | Minimum Gecikme | Onerilen Gecikme | Notlar |
422
+ |-------|----------------|-----------------|-------|
423
+ | Sayfalar arasi gezinme | 3 saniye | 5-10 saniye | Rastgele +/- 2 sn |
424
+ | Begeni islemi | 5 saniye | 10-30 saniye | Rastgele araliklar SART |
425
+ | Yorum yazma | 30 saniye | 60-120 saniye | Her yorum benzersiz olmali |
426
+ | Takip etme | 30 saniye | 60-120 saniye | Rastgele araliklar SART |
427
+ | Takipten cikma | 30 saniye | 60-120 saniye | Ayni gunde takip+unfollow YAPMA |
428
+ | DM gonderme | 30 saniye | 60-180 saniye | Ayni mesaji tekrarlama |
429
+ | Gonderi paylasma | 5 dakika | 15-30 dakika | Cok sik paylasma suphelidir |
430
+ | Hikaye izleme | 2 saniye | 3-5 saniye | Dogal izleme hizi |
431
+ | Scroll (kaydirma) | 1 saniye | 2-4 saniye | Insan-benzeri scroll onemli |
432
+ | Oturum baslangici | - | 30-60 saniye | Giris sonrasi bir sure bekle |
433
+
434
+ #### Rastgelelik (Randomization)
435
+
436
+ - Her gecikmeye +/- %30-50 rastgele sapma ekle
437
+ - Islem siralarini degistir (her zaman ayni sirada yapma)
438
+ - Bazi gonderleri es gec (her gonderiyi begenme)
439
+ - Oturumlar arasinda farkli sureler birak
440
+ - Mouse hareketlerinde dogal egrisellik kullan
441
+ - Typing hizini rastgele yap (50-150ms/karakter)
442
+
443
+ #### Gunluk Rutinler
444
+
445
+ - Guvenli gunluk toplam eylem sayisi: ~150-300 (tum eylemler dahil)
446
+ - Sabah/aksam yogunlugu degistir (insanlar sabah daha aktif)
447
+ - Hafta sonlari farkli patternler kullan
448
+ - Her 30-60 dakikada bir mola ver (5-15 dakika)
449
+ - Bir oturumu 1-2 saat ile sinirla
450
+ - Gunluk toplam otomasyon suresi: 2-4 saat (fazlasi tehlikeli)
451
+
452
+ #### Isim Surecleri (Warm-up)
453
+
454
+ Yeni bir hesap veya uzun suredir kullanilmayan hesap icin:
455
+ - **1. hafta**: Gunluk 5-10 begeni, 2-3 yorum, 1-2 takip
456
+ - **2. hafta**: Gunluk 15-25 begeni, 5-8 yorum, 5-10 takip
457
+ - **3. hafta**: Gunluk 30-50 begeni, 10-15 yorum, 15-25 takip
458
+ - **4. hafta**: Normal limitlere yaklasabilir
459
+
460
+ ### 6.5 Headless Browser Tespitinden Kacinma
461
+
462
+ Instagram headless browser tespiti icin su kontrolleri yapar:
463
+
464
+ ```
465
+ Kontrol edilen degerler:
466
+ - navigator.webdriver === true (headless flag)
467
+ - navigator.languages bos veya eksik
468
+ - navigator.plugins bos (normal tarayicida bos olmaz)
469
+ - window.chrome undefined (Chrome'da tanimli olmali)
470
+ - Permissions API davranisi
471
+ - Canvas fingerprint tutarsizligi
472
+ - WebGL renderer bilgisi
473
+ - screen.width / screen.height orantisizligi
474
+ ```
475
+
476
+ **Onlemler:**
477
+ - Playwright'ta `--disable-blink-features=AutomationControlled` flag'i kullan
478
+ - `navigator.webdriver` override et
479
+ - Gercekci viewport boyutu kullan (1366x768, 1920x1080 gibi)
480
+ - Gercekci User-Agent string'i ayarla
481
+ - Persistent browser context kullan (cookie'ler korunsun)
482
+ - `stealth` plugin/ayarlari kullan (playwright-extra / puppeteer-extra-plugin-stealth)
483
+
484
+ ---
485
+
486
+ ## 7. Giris ve Dogrulama Zorluklari (Login Challenges)
487
+
488
+ ### 7.1 Normal Giris
489
+
490
+ 1. `https://www.instagram.com/accounts/login/` sayfasina git
491
+ 2. `input[name='username']` alanina kullanici adini yaz
492
+ 3. `input[name='password']` alanina sifreyi yaz
493
+ 4. `button[type='submit']` ile giris yap
494
+ 5. "Bilgileri kaydet" modal'inda "Simdi Degil" tikla
495
+ 6. "Bildirimleri ac" modal'inda "Simdi Degil" tikla
496
+
497
+ ### 7.2 Iki Faktorlu Dogrulama (2FA)
498
+
499
+ Giris sonrasi 2FA ekrani acilirsa:
500
+ - `input[name='verificationCode']` alanina kod yazilmali
501
+ - SMS veya Authenticator uygulamasindan gelen 6 haneli kod
502
+ - "Onayla" / "Confirm" butonu
503
+
504
+ **Otomasyon icin 2FA yonetimi:**
505
+ - TOTP (Authenticator) kullaniliyorsa: `otplib` veya benzeri kutuphane ile kod uretlebilir
506
+ - SMS kullaniliyorsa: Otomatik okuma mumkun degil, manuel mudahale gerekir
507
+ - Cookie/session kaydetme ile 2FA tekrarini en aza indir
508
+
509
+ ### 7.3 Supheli Giris Tespiti (Suspicious Login)
510
+
511
+ Instagram tanimadiginiz bir cihaz/IP'den giris yapildiginda:
512
+ - "Bu sen miydin?" / "Was this you?" ekrani
513
+ - E-posta veya SMS ile dogrulama kodu gonderilir
514
+ - Gelen 6 haneli kodu girmek gerekir
515
+
516
+ **Tetikleyiciler:**
517
+ - Yeni IP adresi
518
+ - Yeni cihaz/tarayici
519
+ - Farkli cografi konum
520
+ - VPN/proxy kullanimi
521
+
522
+ ### 7.4 Checkpoint Challenge
523
+
524
+ En agresif dogrulama yontemidir:
525
+ - `https://www.instagram.com/challenge/` URL'sine yonlendirilir
526
+ - Telefon numarasi veya e-posta dogrulamasi
527
+ - Bazen CAPTCHA (reCAPTCHA) istenir
528
+ - Bazen "Arkadaslarini sec" gorsel testi (foto'lardan arkadaslari tani)
529
+
530
+ **Checkpoint Goruldugunde:**
531
+ 1. Otomasyonu durdur
532
+ 2. Manuel olarak dogrulamayi tamamla
533
+ 3. 24-48 saat bekle
534
+ 4. Cok yavas yeniden baslat
535
+
536
+ ### 7.5 Cookie/Session Yonetimi
537
+
538
+ - Basarili girisin ardindan cookie'leri kaydet
539
+ - Sonraki oturumlarda ayni cookie'leri kullan (tekrar giris onlenir)
540
+ - Cookie'lerin suresi: ~90 gun (degiskenlik gosterir)
541
+ - `localStorage` ve `sessionStorage` da onemli (bazi tokenlar burada)
542
+ - Cookie dosya yolu: profil dizininde sakla (profiles/{platform}_{username}/)
543
+
544
+ ---
545
+
546
+ ## 8. Onemli Notlar
547
+
548
+ ### 8.1 API Durumu
549
+
550
+ - Instagram'in **kamuya acik gonderi paylasma API'si YOKTUR**
551
+ - Instagram Graph API sadece **Business/Creator** hesaplari icindir
552
+ - Graph API ile gonderi paylasma: Sadece Business hesaplar, Content Publishing API gerekli
553
+ - Normal hesaplar icin **tarayici otomasyonu tek yontemdir**
554
+ - Instagram Private API (mobil API) kullanimi TOS ihlalidir ve hizla tespit edilir
555
+
556
+ ### 8.2 Web vs Mobil
557
+
558
+ - Web versiyonu mobil uygulamaya gore daha sinirlidir
559
+ - Web'de reel yukleme sinirli olabilir
560
+ - Web'de bazi filtreler bulunmaz
561
+ - Web'de hikaye olusturma sinirlidir (sticker vb. eksik)
562
+ - DM ozellikleri web'de sinirlidir
563
+
564
+ ### 8.3 Dil Ayari
565
+
566
+ - Instagram arayuzu kullanicinin dil ayarina gore degisir
567
+ - Selectorlerde `aria-label` degerleri dile gore farklilik gosterir
568
+ - Turkce arayuz icin: `svg[aria-label='Begen']` vs Ingilizce: `svg[aria-label='Like']`
569
+ - **Oneri**: Mumkunse hesabin dilini Ingilizce'ye ayarla (daha tutarli selectorler)
570
+ - Veya her iki dildeki selectorlderi fallback olarak kullan
571
+
572
+ ### 8.4 Dark Pattern'ler ve Popup'lar
573
+
574
+ Instagram oturum sirasinda cesitli popup'lar gosterir:
575
+ 1. **"Bildirimleri Ac"** popup'i -> "Simdi Degil" tikla
576
+ 2. **"Bilgilerini Kaydet"** popup'i -> "Simdi Degil" tikla
577
+ 3. **"Uygulamayi Indir"** banner'i -> Kapat
578
+ 4. **"Cookie Izni"** banner'i (AB kullanicilari) -> "Kabul Et" / "Accept All"
579
+ 5. **"Hesabini Profesyonel Hesaba Donustur"** onerisi -> Kapat
580
+
581
+ Bu popup'lar otomasyon akisini bozabilir. Her adimda popup kontrolu yap:
582
+ ```
583
+ Popup kontrol selectorlderi:
584
+ - div[role='dialog'] button:has-text('Not Now')
585
+ - div[role='dialog'] button:has-text('Simdi Degil')
586
+ - button[aria-label='Close'] (cookie banner kapatma)
587
+ - div[role='presentation'] (overlay)
588
+ ```
589
+
590
+ ### 8.5 GraphQL Endpoint'leri (Referans)
591
+
592
+ Instagram web, arka planda GraphQL API kullanir. Bazi faydali endpoint'ler:
593
+ - Feed yukleme: `https://www.instagram.com/graphql/query/` (feed query hash ile)
594
+ - Kullanici bilgisi: `https://www.instagram.com/api/v1/users/web_profile_info/?username={USERNAME}`
595
+ - Post detayi: `https://www.instagram.com/api/v1/media/{MEDIA_ID}/info/`
596
+
597
+ > NOT: Bu endpoint'lere dogrudan istek gonderme tavsiye edilmez.
598
+ > Tarayici uzerinden normal navigasyon ile verilere ulasilmalidir.
599
+ > API istekleri bot tespitini tetikler.
600
+
601
+ ### 8.6 Embed ve oEmbed
602
+
603
+ - Post embed URL: `https://www.instagram.com/p/{SHORTCODE}/embed/`
604
+ - oEmbed API: `https://api.instagram.com/oembed?url={POST_URL}`
605
+ - Bunlar halka aciktir ve rate limit daha esnektir
606
+
607
+ ### 8.7 Hesap Turleri
608
+
609
+ | Tur | Ozellikler |
610
+ |-----|-----------|
611
+ | Kisisel (Personal) | Temel ozellikler, API erisimi yok |
612
+ | Icerik Uretici (Creator) | Istatistikler, Insights, sinirli API |
613
+ | Is (Business) | Tam istatistikler, Content Publishing API, reklam |
614
+
615
+ ### 8.8 Sik Karsilasilan Hatalar ve Cozumleri
616
+
617
+ | Hata | Sebep | Cozum |
618
+ |------|-------|-------|
619
+ | "Action Blocked" | Cok hizli/cok fazla islem | 24-48 saat bekle, limitleri dusur |
620
+ | "Please wait a few minutes" | Gecici rate limit | 5-10 dakika bekle |
621
+ | "Challenge Required" | Supheli aktivite | Manuel dogrulama yap |
622
+ | "Login Required" | Cookie/session suresi dolmus | Yeniden giris yap, cookie'leri guncelle |
623
+ | "Page Not Found" | Gonderi silinmis veya gizli hesap | Atlayip devam et |
624
+ | "User Not Found" | Hesap silinmis/yasaklanmis | Atlayip devam et |
625
+ | "Feedback Required" | Ciddi TOS ihlali tespiti | Otomasyon durdur, hesabi incele |
626
+ | Bos sayfa / Sonsuz yukleme | JavaScript hatasi veya ban | Sayfayi yenile, cookie kontrol et |
627
+ | "Restrict certain content" | Icerik kisitlamasi | Icerik turunu/metnini degistir |
628
+
629
+ ---
630
+
631
+ ## 9. Tarayici Otomasyon Ozel Notlari
632
+
633
+ ### 9.1 Playwright/Puppeteer Ayarlari
634
+
635
+ ```
636
+ Onerilen tarayici ayarlari:
637
+ - Viewport: 1366x768 veya 1920x1080 (gercekci masaustu boyutu)
638
+ - User-Agent: Guncek Chrome/Firefox UA string'i
639
+ - Locale: tr-TR veya en-US
640
+ - Timezone: Europe/Istanbul (hesap bolgesi ile uyumlu)
641
+ - Geolocation: Hesabin bulundugu bolge ile uyumlu
642
+ - Persistent context: Cookie/session korumak icin zorunlu
643
+ - Headless: HAYIR (mumkunse headed mod kullan, headless daha kolay tespit edilir)
644
+ - slowMo: 50-100ms (Playwright slowMo parametresi)
645
+ ```
646
+
647
+ ### 9.2 Sayfa Yukleme Stratejisi
648
+
649
+ 1. Sayfaya git
650
+ 2. `networkidle` veya `domcontentloaded` bekle
651
+ 3. Ek 2-3 saniye bekle (dinamik icerik yuklenmesi icin)
652
+ 4. Hedef elementi bekle (`waitForSelector`)
653
+ 5. Element gorunur ve tiklanabilir oldugundan emin ol
654
+ 6. Islemi gerceklestir
655
+
656
+ ### 9.3 Scroll Davranisi
657
+
658
+ Instagram feed sonsuz scroll (infinite scroll) kullanir:
659
+ - Dogal scroll hizi kullan (birden sona atlama YAPMA)
660
+ - Her scroll sonrasi 2-4 saniye bekle (icerik yuklenmesi + dogallik)
661
+ - Bazen yukari da scroll yap (gercek kullanici davranisi)
662
+ - `window.scrollBy(0, 300-600)` gibi kucuk adimlarla scroll yap
663
+
664
+ ### 9.4 Tiklanabilirlik Kontrolu
665
+
666
+ Instagram'da elementler bazen gorunur olsa bile tiklanabilir olmayabilir:
667
+ - Overlay/modal arkasinda kalabilir
668
+ - Lazy load henuz tamamlanmamis olabilir
669
+ - Element viewport disinda olabilir
670
+ - `element.scrollIntoView()` ile gorunur alana getir
671
+ - `page.waitForSelector(selector, { state: 'visible' })` kullan
672
+
673
+ ---
674
+
675
+ ## 10. Ozet: Altin Kurallar
676
+
677
+ 1. **YAVAS OL**: Instagram'da hiz en buyuk dusmandir. Her islem arasinda 5-30 saniye bekle.
678
+ 2. **RASTGELE OL**: Ayni paternleri tekrarlama. Gecikmeler, islem siralari, icerikler degisken olmali.
679
+ 3. **AZ YAP**: Gunluk toplam eylem sayisini 150-300 ile sinirla.
680
+ 4. **ISINMA**: Yeni hesaplarda veya uzun aradan sonra cok yavas baslat (1-2 hafta isinma sureci).
681
+ 5. **ACTION BLOCK = DUR**: Eylem engeli gorursen TUM otomasyonu en az 24 saat durdur.
682
+ 6. **COOKIE KAYDET**: Her basarili giris sonrasi cookie'leri sakla, gereksiz yeniden giris yapma.
683
+ 7. **POPUP KONTROL**: Her adimda beklenmedik popup/modal kontrolu yap.
684
+ 8. **GERCEKCI OL**: Headless mode kacinilmali, gercekci viewport/UA/timezone kullanilmali.
685
+ 9. **MOLALAR VER**: Surekli aktif olma, 30-60 dakikada bir mola ver.
686
+ 10. **DILI SABITLE**: Selectorlerin tutarli olmasi icin arayuz dilini Ingilizce'de tut veya iki dilde fallback kullan.