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.
- package/README.md +226 -0
- package/bin/postinstall.js +19 -0
- package/bin/social-agent.js +109 -0
- package/config.example.json +20 -0
- package/hooks/post-push +69 -0
- package/knowledge/bluesky.md +1083 -0
- package/knowledge/facebook.md +603 -0
- package/knowledge/instagram.md +686 -0
- package/knowledge/linkedin.md +1013 -0
- package/knowledge/mastodon.md +1291 -0
- package/knowledge/telegram.md +824 -0
- package/knowledge/x.md +1532 -0
- package/package.json +30 -0
|
@@ -0,0 +1,1013 @@
|
|
|
1
|
+
# LinkedIn Platform Bilgi Dosyasi
|
|
2
|
+
|
|
3
|
+
Bu dosya, LinkedIn platformunda browser otomasyon islemleri icin kapsamli bir referans kaynagi olarak hazirlanmistir. AI mapper ve runner modulleri bu dosyayi okuyarak selector secimi, sayfa navigasyonu ve anti-bot onlemlerine dair karar verir.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. URL Yapisi
|
|
8
|
+
|
|
9
|
+
LinkedIn'in tum sayfalari `https://www.linkedin.com` altinda yer alir. Asagida tum onemli URL desenleri listelenmistir.
|
|
10
|
+
|
|
11
|
+
### 1.1 Ana Sayfalar
|
|
12
|
+
|
|
13
|
+
| Sayfa | URL | Aciklama |
|
|
14
|
+
|-------|-----|----------|
|
|
15
|
+
| Ana Akis (Feed) | `/feed/` | Ana sayfa, paylasimlar ve oneriler |
|
|
16
|
+
| Profilim | `/in/KULLANICIADI/` | Kendi profilin veya baskasinin profili |
|
|
17
|
+
| Profil Duzenle | `/in/KULLANICIADI/edit/` | Profil duzenleme ekrani |
|
|
18
|
+
| Agim | `/mynetwork/` | Ag yonetimi ana sayfasi |
|
|
19
|
+
| Baglanti Onerileri | `/mynetwork/grow/` | "Taniyabileceginiz kisiler" sayfasi |
|
|
20
|
+
| Davetler | `/mynetwork/invitation-manager/` | Gelen/gonderilen baglanti istekleri |
|
|
21
|
+
| Mesajlar | `/messaging/` | Mesajlasma ana sayfasi |
|
|
22
|
+
| Belirli Mesaj | `/messaging/thread/THREAD_ID/` | Tek bir mesaj konusu |
|
|
23
|
+
| Bildirimler | `/notifications/` | Tum bildirimler |
|
|
24
|
+
| Isler | `/jobs/` | Is ilanlari ana sayfasi |
|
|
25
|
+
| Is Ara | `/jobs/search/` | Is arama sonuclari |
|
|
26
|
+
| Kaydedilen Isler | `/my-items/saved-jobs/` | Kaydedilen is ilanlari |
|
|
27
|
+
| Ayarlar | `/psettings/` | Genel ayarlar |
|
|
28
|
+
| Gizlilik Ayarlari | `/psettings/privacy/` | Gizlilik ayarlari |
|
|
29
|
+
| Hesap Ayarlari | `/psettings/account/` | Hesap ayarlari |
|
|
30
|
+
|
|
31
|
+
### 1.2 Arama URL'leri
|
|
32
|
+
|
|
33
|
+
LinkedIn arama sonuclari filtrelerle birlikte URL parametreleri uzerinden calisir.
|
|
34
|
+
|
|
35
|
+
| Arama Turu | URL Deseni |
|
|
36
|
+
|------------|------------|
|
|
37
|
+
| Genel Arama | `/search/results/all/?keywords=SORGU` |
|
|
38
|
+
| Kisi Ara | `/search/results/people/?keywords=SORGU` |
|
|
39
|
+
| Sirket Ara | `/search/results/companies/?keywords=SORGU` |
|
|
40
|
+
| Gonderi Ara | `/search/results/content/?keywords=SORGU` |
|
|
41
|
+
| Grup Ara | `/search/results/groups/?keywords=SORGU` |
|
|
42
|
+
| Etkinlik Ara | `/search/results/events/?keywords=SORGU` |
|
|
43
|
+
| Okul Ara | `/search/results/schools/?keywords=SORGU` |
|
|
44
|
+
| Is Ara | `/jobs/search/?keywords=SORGU` |
|
|
45
|
+
|
|
46
|
+
Arama filtreleri URL parametreleri olarak eklenir:
|
|
47
|
+
- `&network=%5B"F"%5D` - 1. derece baglantilar
|
|
48
|
+
- `&network=%5B"S"%5D` - 2. derece baglantilar
|
|
49
|
+
- `&network=%5B"O"%5D` - 3. derece ve diger
|
|
50
|
+
- `&geoUrn=%5B"LOCATION_ID"%5D` - Konum filtresi
|
|
51
|
+
- `&industry=%5B"INDUSTRY_ID"%5D` - Sektor filtresi
|
|
52
|
+
- `¤tCompany=%5B"COMPANY_ID"%5D` - Mevcut sirket
|
|
53
|
+
- `&school=%5B"SCHOOL_ID"%5D` - Okul filtresi
|
|
54
|
+
- `&connectionOf=%5B"PROFILE_URN"%5D` - Belirli kisinin baglantilari
|
|
55
|
+
- `&origin=FACETED_SEARCH` - Arama kaynagi
|
|
56
|
+
- `&sid=OTURUM_ID` - Arama oturumu
|
|
57
|
+
|
|
58
|
+
### 1.3 Sirket Sayfalari
|
|
59
|
+
|
|
60
|
+
| Sayfa | URL Deseni |
|
|
61
|
+
|-------|------------|
|
|
62
|
+
| Sirket Ana | `/company/SIRKET_ADI/` |
|
|
63
|
+
| Hakkinda | `/company/SIRKET_ADI/about/` |
|
|
64
|
+
| Gonderiler | `/company/SIRKET_ADI/posts/` |
|
|
65
|
+
| Isler | `/company/SIRKET_ADI/jobs/` |
|
|
66
|
+
| Calisanlar | `/company/SIRKET_ADI/people/` |
|
|
67
|
+
| Hayat | `/company/SIRKET_ADI/life/` |
|
|
68
|
+
|
|
69
|
+
### 1.4 Gruplar ve Etkinlikler
|
|
70
|
+
|
|
71
|
+
| Sayfa | URL Deseni |
|
|
72
|
+
|-------|------------|
|
|
73
|
+
| Grup | `/groups/GRUP_ID/` |
|
|
74
|
+
| Etkinlik | `/events/ETKINLIK_ID/` |
|
|
75
|
+
| Etkinliklerim | `/events/` |
|
|
76
|
+
| Grubun Gonderileri | `/groups/GRUP_ID/posts/` |
|
|
77
|
+
|
|
78
|
+
### 1.5 Diger Onemli URL'ler
|
|
79
|
+
|
|
80
|
+
| Sayfa | URL |
|
|
81
|
+
|-------|-----|
|
|
82
|
+
| LinkedIn Learning | `/learning/` |
|
|
83
|
+
| Makale Yazma | `/article/new/` veya `/pulse/` |
|
|
84
|
+
| Haber Bulten Olustur | `/newsletters/` |
|
|
85
|
+
| Analitik | `/analytics/` |
|
|
86
|
+
| Creator Mode | `/in/KULLANICIADI/recent-activity/` |
|
|
87
|
+
| Hashtag Sayfasi | `/feed/hashtag/HASHTAG/` |
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 2. Bilinen Selector'lar ve aria-label Degerleri
|
|
92
|
+
|
|
93
|
+
LinkedIn, `data-testid` kullanmaz (X/Twitter'in aksine). Bunun yerine agirlikli olarak su nitelikleri kullanir:
|
|
94
|
+
- `aria-label` (en guvenilir)
|
|
95
|
+
- `class` (obfuscated olabilir, degisken)
|
|
96
|
+
- `role` (sabit)
|
|
97
|
+
- `data-control-name` (bazi butonlarda)
|
|
98
|
+
- `data-view-name` (bazi alanlarda)
|
|
99
|
+
|
|
100
|
+
**ONEMLI**: LinkedIn sinif adlari (class) cesitli build'lerde degisir. `artdeco-*` on ekli siniflar nispeten sabit kalir. Rastgele hash iceren siniflar (`rBknNMyP...` gibi) her deploy'da degisebilir ve guvenilmezdir.
|
|
101
|
+
|
|
102
|
+
### 2.1 Ust Navigasyon (Header)
|
|
103
|
+
|
|
104
|
+
LinkedIn ust menusundeki ana butonlar:
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
Selector: nav.global-nav
|
|
108
|
+
Icerik: Home, My Network, Jobs, Messaging, Notifications, Me, Business
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
| Oge | Selector | Fallback |
|
|
112
|
+
|-----|----------|----------|
|
|
113
|
+
| Ana Sayfa | `a[href*='/feed/']` veya `li.global-nav__primary-item:nth-child(1) a` | `[data-control-name='nav.homepage']` |
|
|
114
|
+
| Agim | `a[href*='/mynetwork/']` | `[data-control-name='nav.mynetwork']` |
|
|
115
|
+
| Isler | `a[href*='/jobs/']` | `[data-control-name='nav.jobs']` |
|
|
116
|
+
| Mesajlar | `a[href*='/messaging/']` | `[data-control-name='nav.messaging']` |
|
|
117
|
+
| Bildirimler | `a[href*='/notifications/']` | `[data-control-name='nav.notifications']` |
|
|
118
|
+
| Profil Menusu | `button[class*='global-nav__primary-link-me']` | `.global-nav__me img` |
|
|
119
|
+
| Arama Kutusu | `input.search-global-typeahead__input` | `input[role='combobox'][aria-label]`, `input[placeholder*='Ara']`, `input[placeholder*='Search']` |
|
|
120
|
+
|
|
121
|
+
### 2.2 Gonderi Olusturma
|
|
122
|
+
|
|
123
|
+
#### Feed'deki "Gonderi Baslat" Butonu
|
|
124
|
+
|
|
125
|
+
LinkedIn feed sayfasinda gonderi olusturmak icin ustteki kutucuk:
|
|
126
|
+
|
|
127
|
+
| Oge | Selector | Fallback |
|
|
128
|
+
|-----|----------|----------|
|
|
129
|
+
| "Gonderi baslat" alani | `.share-box-feed-entry__top-bar button` | `button[aria-label*='gonderi' i]`, `button[aria-label*='Start a post' i]`, `.share-box-feed-entry__trigger` |
|
|
130
|
+
| Foto Ekle butonu | `button[aria-label*='Foto']` | `button[aria-label*='Photo']`, `button[aria-label*='image' i]` |
|
|
131
|
+
| Video Ekle butonu | `button[aria-label*='Video']` | `button[aria-label*='video' i]` |
|
|
132
|
+
| Etkinlik butonu | `button[aria-label*='Etkinlik']` | `button[aria-label*='Event']` |
|
|
133
|
+
| Makale Yaz | `button[aria-label*='Makale']` | `button[aria-label*='article' i]` |
|
|
134
|
+
|
|
135
|
+
#### Gonderi Olusturma Modali (Share Box Modal)
|
|
136
|
+
|
|
137
|
+
Modal acildiktan sonra kullanilan selector'lar:
|
|
138
|
+
|
|
139
|
+
| Oge | Selector | Fallback |
|
|
140
|
+
|-----|----------|----------|
|
|
141
|
+
| Modal Konteyner | `div.share-box` | `div[role='dialog'][aria-label*='gonderi' i]`, `div[role='dialog'][aria-label*='post' i]`, `.artdeco-modal` |
|
|
142
|
+
| Metin Alani (Editor) | `div.ql-editor[role='textbox']` | `div[aria-label='Metin Duzenleyici']`, `div[aria-label='Text editor']`, `div[contenteditable='true'][role='textbox']`, `div[data-placeholder*='hakkinda' i]`, `div[data-placeholder*='want to talk' i]` |
|
|
143
|
+
| Gonderi Paylasma Butonu (Gonder) | `button.share-actions__primary-action` | `button[aria-label*='Gonderi paylas' i]`, `button[aria-label*='Post' i][type='submit']`, `.share-box__footer button.artdeco-button--primary` |
|
|
144
|
+
| Herkes Icin (Gorunurluk) | `button.share-creation__visibility-toggle` | `button[aria-label*='gorunurluk' i]`, `button[aria-label*='visibility' i]` |
|
|
145
|
+
| Medya Ekle | `button[aria-label*='Medya ekle' i]` | `button[aria-label*='Add media' i]`, `.share-creation-state__additional-toolbar button:first-child` |
|
|
146
|
+
| Belge Ekle | `button[aria-label*='Belge ekle' i]` | `button[aria-label*='Add a document' i]` |
|
|
147
|
+
| Anket Olustur | `button[aria-label*='Anket' i]` | `button[aria-label*='poll' i]` |
|
|
148
|
+
| Emoji Butonu | `button[aria-label*='Emoji' i]` | `.share-creation-state__additional-toolbar button[aria-label*='emoji' i]` |
|
|
149
|
+
| Hashtag Ekle | `button[aria-label*='Hashtag' i]` | `button[aria-label*='Add hashtag' i]` |
|
|
150
|
+
| Kapat (X) | `button[aria-label*='Kapat' i]` | `button[aria-label*='Dismiss' i]`, `button[aria-label*='Close' i]`, `.artdeco-modal__dismiss` |
|
|
151
|
+
|
|
152
|
+
#### Anket Olusturma (Post Modali Icinde)
|
|
153
|
+
|
|
154
|
+
| Oge | Selector |
|
|
155
|
+
|-----|----------|
|
|
156
|
+
| Soru Alani | `input[placeholder*='soru' i]` veya `input[placeholder*='question' i]` |
|
|
157
|
+
| Secenek 1 | `input[name='option-0']` veya `input[placeholder*='Secenek 1' i]` |
|
|
158
|
+
| Secenek 2 | `input[name='option-1']` veya `input[placeholder*='Secenek 2' i]` |
|
|
159
|
+
| Secenek Ekle | `button[aria-label*='secenek ekle' i]` |
|
|
160
|
+
| Anket Suresi | `select[aria-label*='sure' i]` veya `.poll-duration select` |
|
|
161
|
+
|
|
162
|
+
### 2.3 Baglanti Islemleri (Connection)
|
|
163
|
+
|
|
164
|
+
#### Baglanti Onerisi Kartlari (/mynetwork/grow/)
|
|
165
|
+
|
|
166
|
+
| Oge | Selector | Fallback |
|
|
167
|
+
|-----|----------|----------|
|
|
168
|
+
| Oneri Karti | `.discover-entity-type-card` | `.discover-person-card`, `li[class*='discover']` |
|
|
169
|
+
| Baglanti Kur butonu | `button[aria-label*='baglanti' i]` | `button[aria-label*='Connect' i]`, `button[aria-label*='Invite' i]`, `button[data-control-name*='connect']` |
|
|
170
|
+
| Yoksay butonu | `button[aria-label*='Yoksay' i]` | `button[aria-label*='Dismiss' i]`, `button[aria-label*='Ignore' i]` |
|
|
171
|
+
| Kisi Adi | `.discover-entity-type-card .discover-person-card__name` | `.discover-entity-type-card a[href*='/in/']` |
|
|
172
|
+
|
|
173
|
+
**ONEMLI**: Baglanti butonu aria-label genelde kisinin adini icerir. Ornegin: `aria-label="Gorkem Yildiz ile baglanti kur"` veya `aria-label="Invite Gorkem Yildiz to connect"`. Bu yuzden belirli bir kisiye istek gondermek icin:
|
|
174
|
+
```
|
|
175
|
+
button[aria-label*='KISI_ADI'][aria-label*='baglanti' i]
|
|
176
|
+
button[aria-label*='KISI_ADI'][aria-label*='Connect' i]
|
|
177
|
+
button[aria-label*='KISI_ADI'][aria-label*='Invite' i]
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
#### Baglanti Istegi Modali
|
|
181
|
+
|
|
182
|
+
"Baglanti kur" butonuna tikladiktan sonra bazen bir modal acilir (ozellikle ortak bir kurum/okul yoksa):
|
|
183
|
+
|
|
184
|
+
| Oge | Selector | Fallback |
|
|
185
|
+
|-----|----------|----------|
|
|
186
|
+
| Modal | `div[role='dialog'][aria-label*='baglanti' i]` | `.send-invite`, `div[role='dialog'][aria-label*='connect' i]` |
|
|
187
|
+
| "Not ekle" butonu | `button[aria-label*='Not ekle' i]` | `button[aria-label*='Add a note' i]`, `.artdeco-modal button.artdeco-button--secondary` |
|
|
188
|
+
| Not Metin Alani | `textarea[name='message']` | `textarea#custom-message`, `textarea[placeholder*='not' i]`, `textarea[placeholder*='note' i]` |
|
|
189
|
+
| "Gonder" butonu | `button[aria-label*='Gonder' i]` | `button[aria-label*='Send' i]`, `.artdeco-modal button.artdeco-button--primary` |
|
|
190
|
+
| "Not olmadan gonder" | `button[aria-label*='notsuz' i]` | `button[aria-label*='Send without a note' i]`, `.artdeco-modal button.artdeco-button--primary` |
|
|
191
|
+
|
|
192
|
+
#### Davet Yonetimi (/mynetwork/invitation-manager/)
|
|
193
|
+
|
|
194
|
+
| Oge | Selector | Fallback |
|
|
195
|
+
|-----|----------|----------|
|
|
196
|
+
| Gelen Davetler Tab | `button[aria-label*='Gelen' i]` | `button[aria-label*='Received' i]` |
|
|
197
|
+
| Gonderilen Tab | `button[aria-label*='Gonderilen' i]` | `button[aria-label*='Sent' i]` |
|
|
198
|
+
| Kabul Et | `button[aria-label*='Kabul' i]` | `button[aria-label*='Accept' i]` |
|
|
199
|
+
| Reddet | `button[aria-label*='Yoksay' i]` | `button[aria-label*='Ignore' i]` |
|
|
200
|
+
|
|
201
|
+
### 2.4 Tepkiler (Reactions)
|
|
202
|
+
|
|
203
|
+
LinkedIn'de bir gonderiye tepki verme. "Begen" butonuna hover yapildiginda (veya uzun basildiginda) tepki secenekleri gozukur.
|
|
204
|
+
|
|
205
|
+
| Oge | Selector | Fallback |
|
|
206
|
+
|-----|----------|----------|
|
|
207
|
+
| Begen butonu (varsayilan) | `button[aria-label*='begen' i]` | `button[aria-label*='like' i]`, `button[data-control-name='like']`, `.react-button__trigger` |
|
|
208
|
+
| Tepki Secenekleri Bar | `.reactions-menu` | `div[role='toolbar'][aria-label*='React' i]`, `.react-button__popup` |
|
|
209
|
+
| Begen (Like) | `button[aria-label*='Begen' i]` | `button[aria-label='Like' i]`, `.reactions-menu button:nth-child(1)` |
|
|
210
|
+
| Kutla (Celebrate) | `button[aria-label*='Kutla' i]` | `button[aria-label='Celebrate' i]`, `.reactions-menu button:nth-child(2)` |
|
|
211
|
+
| Destek (Support) | `button[aria-label*='Destek' i]` | `button[aria-label='Support' i]`, `.reactions-menu button:nth-child(3)` |
|
|
212
|
+
| Sev (Love) | `button[aria-label*='Sev' i]` | `button[aria-label='Love' i]`, `.reactions-menu button:nth-child(4)` |
|
|
213
|
+
| Bilgilendirici (Insightful) | `button[aria-label*='Bilgilendirici' i]` | `button[aria-label='Insightful' i]`, `.reactions-menu button:nth-child(5)` |
|
|
214
|
+
| Komik (Funny) | `button[aria-label*='Komik' i]` | `button[aria-label='Funny' i]`, `.reactions-menu button:nth-child(6)` |
|
|
215
|
+
|
|
216
|
+
**Tepki verme akisi:**
|
|
217
|
+
1. Gonderi altindaki "Begen" butonunu bul
|
|
218
|
+
2. Hover yap (mouse uzerine gotur) veya tiklayip basili tut
|
|
219
|
+
3. Tepki secenekleri paneli belirir (yaklasik 500ms bekle)
|
|
220
|
+
4. Istenen tepki butonuna tikla
|
|
221
|
+
5. Sadece "Begen" icin direkt tek tikla yeterli
|
|
222
|
+
|
|
223
|
+
### 2.5 Yorum Yapma (Comments)
|
|
224
|
+
|
|
225
|
+
| Oge | Selector | Fallback |
|
|
226
|
+
|-----|----------|----------|
|
|
227
|
+
| Yorum Yap butonu | `button[aria-label*='yorum' i]` | `button[aria-label*='comment' i]`, `button[data-control-name='comment']` |
|
|
228
|
+
| Yorum Alani | `div.ql-editor[data-placeholder*='yorum' i]` | `div[contenteditable='true'][aria-label*='yorum' i]`, `div[contenteditable='true'][aria-label*='comment' i]`, `.comments-comment-box__form div[contenteditable]` |
|
|
229
|
+
| Gonder butonu (yorum) | `button.comments-comment-box__submit-button` | `button[aria-label*='Yorum gonder' i]`, `button[aria-label*='Post comment' i]`, `.comments-comment-box__form button[type='submit']` |
|
|
230
|
+
| Yorum Listesi | `.comments-comments-list` | `div[data-view-name*='comment']` |
|
|
231
|
+
| Tek Yorum | `.comments-comment-item` | `article.comments-comment-item` |
|
|
232
|
+
|
|
233
|
+
### 2.6 Paylasma (Share/Repost)
|
|
234
|
+
|
|
235
|
+
| Oge | Selector | Fallback |
|
|
236
|
+
|-----|----------|----------|
|
|
237
|
+
| Yeniden Paylas butonu | `button[aria-label*='yeniden paylas' i]` | `button[aria-label*='repost' i]`, `button[aria-label*='share' i]`, `button[data-control-name='share']` |
|
|
238
|
+
| Aninda Yeniden Paylas | `button[aria-label*='Aninda' i]` veya menu icinde ilk secenek | `li:first-child button` (share menusu icinde) |
|
|
239
|
+
| Dusuncelerinle Paylas | menu icinde ikinci secenek | alinti gonderi modali acar |
|
|
240
|
+
|
|
241
|
+
### 2.7 Profil Sayfasi Aksiyonlari (/in/USERNAME/)
|
|
242
|
+
|
|
243
|
+
| Oge | Selector | Fallback |
|
|
244
|
+
|-----|----------|----------|
|
|
245
|
+
| Takip Et butonu | `button[aria-label*='Takip' i]` | `button[aria-label*='Follow' i]`, `button[data-control-name='follow']` |
|
|
246
|
+
| Baglanti Kur butonu | `button[aria-label*='baglanti kur' i]` | `button[aria-label*='Connect' i]`, `.pv-top-card-v2-ctas button[aria-label*='connect' i]` |
|
|
247
|
+
| Mesaj Gonder butonu | `button[aria-label*='Mesaj' i]` | `button[aria-label*='Message' i]`, `button[data-control-name='message']` |
|
|
248
|
+
| Daha Fazla butonu | `button[aria-label*='Daha fazla' i]` | `button[aria-label*='More actions' i]`, `.pv-top-card-v2-ctas button[aria-label*='more' i]` |
|
|
249
|
+
| Profil Resmi | `.pv-top-card-profile-picture img` | `img.presence-entity__image`, `.profile-photo-edit img` |
|
|
250
|
+
| Isim | `h1.text-heading-xlarge` | `.pv-top-card--list li:first-child`, `h1[class*='inline']` |
|
|
251
|
+
| Baslik (Headline) | `.text-body-medium` (ismin altinda) | `.pv-top-card--list .text-body-medium` |
|
|
252
|
+
| Konum | `.pv-top-card--list .text-body-small:last-child` | `span[class*='location']` |
|
|
253
|
+
| Hakkinda Bolumu | `section[data-view-name='profile-card'] div.pv-about__summary-text` | `#about ~ .display-flex` |
|
|
254
|
+
|
|
255
|
+
### 2.8 Mesajlasma (Messaging)
|
|
256
|
+
|
|
257
|
+
| Oge | Selector | Fallback |
|
|
258
|
+
|-----|----------|----------|
|
|
259
|
+
| Yeni Mesaj butonu | `button[aria-label*='Yeni mesaj' i]` | `button[aria-label*='Compose message' i]`, `.msg-overlay-bubble-header button` |
|
|
260
|
+
| Alici Alani | `input[aria-label*='Alici' i]` | `input[aria-label*='Type a name' i]`, `.msg-compose__header-input input` |
|
|
261
|
+
| Mesaj Alani | `div.msg-form__contenteditable[role='textbox']` | `div[contenteditable='true'][aria-label*='mesaj' i]`, `div[contenteditable='true'][aria-label*='Write a message' i]`, `.msg-form__message-texteditor div[contenteditable]` |
|
|
262
|
+
| Gonder butonu | `button.msg-form__send-button` | `button[aria-label*='Gonder' i]`, `button[aria-label*='Send' i]`, `.msg-form__send-btn` |
|
|
263
|
+
| Dosya Ekle | `button[aria-label*='Dosya ekle' i]` | `button[aria-label*='Attach a file' i]` |
|
|
264
|
+
| Emoji (mesaj) | `button[aria-label*='Emoji' i]` (mesaj formunda) | `.msg-form__footer button[aria-label*='emoji' i]` |
|
|
265
|
+
| Mesaj Listesi | `.msg-conversations-container` | `.msg-thread` |
|
|
266
|
+
| Tek Mesaj Oge | `.msg-s-event-listitem` | `.msg-s-message-list__event` |
|
|
267
|
+
|
|
268
|
+
#### Mini Mesaj Kutusu (Sag Alt)
|
|
269
|
+
|
|
270
|
+
LinkedIn'de sag alt kosede kucuk mesajlasma penceresi acilabilir:
|
|
271
|
+
|
|
272
|
+
| Oge | Selector |
|
|
273
|
+
|-----|----------|
|
|
274
|
+
| Mini Pencere | `.msg-overlay-conversation-bubble` |
|
|
275
|
+
| Kucult | `button[aria-label*='Kucult' i]` veya `button[aria-label*='Minimize' i]` |
|
|
276
|
+
| Kapat | `.msg-overlay-bubble-header button[aria-label*='Kapat' i]` |
|
|
277
|
+
|
|
278
|
+
### 2.9 Is Ilanlari (Jobs)
|
|
279
|
+
|
|
280
|
+
| Oge | Selector | Fallback |
|
|
281
|
+
|-----|----------|----------|
|
|
282
|
+
| Is Ara kutusu | `input[aria-label*='anahtar kelime' i]` | `input[aria-label*='Search by title' i]`, `.jobs-search-box__input` |
|
|
283
|
+
| Konum kutusu | `input[aria-label*='Konum' i]` | `input[aria-label*='City' i]`, `.jobs-search-box__location input` |
|
|
284
|
+
| Ara butonu | `button[aria-label*='Ara' i]` (jobs icinde) | `.jobs-search-box__submit-button` |
|
|
285
|
+
| Kolay Basvuru | `button[aria-label*='Kolay Basvuru' i]` | `button[aria-label*='Easy Apply' i]`, `.jobs-apply-button` |
|
|
286
|
+
| Kaydet | `button[aria-label*='Kaydet' i]` | `button[aria-label*='Save' i]`, `button[data-control-name='save']` |
|
|
287
|
+
| Is Karti | `.job-card-container` | `.jobs-search-results__list-item` |
|
|
288
|
+
|
|
289
|
+
### 2.10 Feed Gonderileri
|
|
290
|
+
|
|
291
|
+
| Oge | Selector | Fallback |
|
|
292
|
+
|-----|----------|----------|
|
|
293
|
+
| Gonderi Konteyneri | `.feed-shared-update-v2` | `div[data-urn*='activity']`, `div[data-id*='urn:li:activity']` |
|
|
294
|
+
| Gonderi Metni | `.feed-shared-text` | `.feed-shared-update-v2 .break-words span[dir='ltr']` |
|
|
295
|
+
| Gonderi Gorseli | `.feed-shared-image img` | `.feed-shared-update-v2 img[loading='lazy']` |
|
|
296
|
+
| Gonderi Video | `.feed-shared-external-video` | `video`, `.feed-shared-linkedin-video` |
|
|
297
|
+
| Gonderi Belgesi | `.feed-shared-document` | `.feed-shared-update-v2 .document-viewer` |
|
|
298
|
+
| Uc Nokta Menusu | `button[aria-label*='menu' i]` (gonderi icinde) | `.feed-shared-control-menu button`, `button[aria-label*='daha fazla' i]` (gonderi kartinda) |
|
|
299
|
+
| Gonderiyi Raporla | `.feed-shared-control-menu li button` (menu acilinca) | |
|
|
300
|
+
| Gonder Sahibi Adi | `.feed-shared-actor__title` | `.update-components-actor__name` |
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## 3. Tum Etkilesimler (Interactions)
|
|
305
|
+
|
|
306
|
+
### 3.1 Gonderi Paylasma (Post Olusturma)
|
|
307
|
+
|
|
308
|
+
#### 3.1.1 Metin Gonderi
|
|
309
|
+
|
|
310
|
+
**Adimlar:**
|
|
311
|
+
1. `/feed/` sayfasina git
|
|
312
|
+
2. "Gonderi baslat" butonuna tikla
|
|
313
|
+
3. Modal acilmasini bekle (2-3 saniye)
|
|
314
|
+
4. `div.ql-editor` icerisine metni yaz
|
|
315
|
+
5. "Gonderi paylas" / "Post" butonuna tikla
|
|
316
|
+
6. Gonderinin yayinlanmasini bekle (3 saniye)
|
|
317
|
+
|
|
318
|
+
**Dikkat:**
|
|
319
|
+
- Metin alani `contenteditable` bir div'dir, normal input degildir
|
|
320
|
+
- `type` action'i ile yazilirken Playwright'in `fill()` metodu bazen calismayabilir, `pressSequentially()` veya `keyboard.type()` tercih edilmeli
|
|
321
|
+
- LinkedIn Turkce arayuzde "Gonderi paylas", Ingilizce arayuzde "Post" yazar
|
|
322
|
+
|
|
323
|
+
#### 3.1.2 Gorsel Gonderi
|
|
324
|
+
|
|
325
|
+
**Adimlar:**
|
|
326
|
+
1. Gonderi modalini ac (3.1.1 adim 1-3)
|
|
327
|
+
2. "Medya ekle" / "Foto ekle" butonuna tikla
|
|
328
|
+
3. Dosya secici (file input) acilir: `input[type='file']` (gizli, `setInputFiles()` ile kullan)
|
|
329
|
+
4. Gorsel yuklenmesini bekle (5-10 saniye, boyuta bagli)
|
|
330
|
+
5. Opsiyonel: Alt metin ekle
|
|
331
|
+
6. Metni yaz ve paylas
|
|
332
|
+
|
|
333
|
+
**Dikkat:**
|
|
334
|
+
- Birden fazla gorsel yuklenebilir (max 9 adet standart, karusel icin daha fazla)
|
|
335
|
+
- `input[type='file']` elementi gorunmezdir, Playwright `setInputFiles()` ile erisim saglanir
|
|
336
|
+
- Dosya yukleme sirasinda progress bar gorulur
|
|
337
|
+
|
|
338
|
+
#### 3.1.3 Video Gonderi
|
|
339
|
+
|
|
340
|
+
**Adimlar:**
|
|
341
|
+
1. Gonderi modalini ac
|
|
342
|
+
2. "Video" butonuna tikla
|
|
343
|
+
3. Dosya secici ile video dosyasini sec
|
|
344
|
+
4. Yukleme ve isleme bekle (30+ saniye olabilir)
|
|
345
|
+
5. Opsiyonel: Altyazi ekle
|
|
346
|
+
6. Metni yaz ve paylas
|
|
347
|
+
|
|
348
|
+
**Kisitlar:**
|
|
349
|
+
- Maks dosya boyutu: 5GB
|
|
350
|
+
- Maks sure: 15 dakika (normal kullanicilar), 30 dakika (LinkedIn Live)
|
|
351
|
+
- Desteklenen formatlar: MP4, MOV, AVI, MPEG
|
|
352
|
+
- Isleme suresi uzun olabilir
|
|
353
|
+
|
|
354
|
+
#### 3.1.4 Belge Gonderi (Document/Carousel)
|
|
355
|
+
|
|
356
|
+
**Adimlar:**
|
|
357
|
+
1. Gonderi modalini ac
|
|
358
|
+
2. "Belge ekle" butonuna tikla
|
|
359
|
+
3. PDF, PPT veya DOC dosyasi sec
|
|
360
|
+
4. Belge basligini yaz
|
|
361
|
+
5. Metni yaz ve paylas
|
|
362
|
+
|
|
363
|
+
**Dikkat:**
|
|
364
|
+
- PDF en iyi format (carousel/slider olarak gosterilir)
|
|
365
|
+
- Maks 300 sayfa, maks 100MB
|
|
366
|
+
|
|
367
|
+
#### 3.1.5 Anket (Poll)
|
|
368
|
+
|
|
369
|
+
**Adimlar:**
|
|
370
|
+
1. Gonderi modalini ac
|
|
371
|
+
2. "Anket" butonuna tikla
|
|
372
|
+
3. Soru metnini yaz
|
|
373
|
+
4. En az 2, en fazla 4 secenek gir
|
|
374
|
+
5. Anket suresini sec (1 gun, 3 gun, 1 hafta, 2 hafta)
|
|
375
|
+
6. "Bitti" / "Done" tikla
|
|
376
|
+
7. Opsiyonel gonderi metni ekle ve paylas
|
|
377
|
+
|
|
378
|
+
### 3.2 Baglanti Istegi Gonderme
|
|
379
|
+
|
|
380
|
+
#### 3.2.1 Oneri Sayfasindan (/mynetwork/grow/)
|
|
381
|
+
|
|
382
|
+
**Adimlar:**
|
|
383
|
+
1. `/mynetwork/grow/` sayfasina git
|
|
384
|
+
2. Sayfanin yuklenmesini bekle (3 saniye)
|
|
385
|
+
3. Hedef kisinin kartindaki "Baglanti kur" butonuna tikla
|
|
386
|
+
4. Eger modal acilirsa:
|
|
387
|
+
a. "Not ekle" butonuna tikla (opsiyonel)
|
|
388
|
+
b. Not metnini yaz
|
|
389
|
+
c. "Gonder" butonuna tikla
|
|
390
|
+
5. Eger modal acilmazsa: istek direkt gonderilir (ortak kurum/okul varsa)
|
|
391
|
+
|
|
392
|
+
#### 3.2.2 Profil Sayfasindan
|
|
393
|
+
|
|
394
|
+
**Adimlar:**
|
|
395
|
+
1. `/in/KULLANICIADI/` sayfasina git
|
|
396
|
+
2. "Baglanti kur" / "Connect" butonuna tikla
|
|
397
|
+
3. Modal islemlerini yap (3.2.1 adim 4 ile ayni)
|
|
398
|
+
|
|
399
|
+
**Dikkat:**
|
|
400
|
+
- Bazi profillerde "Connect" yerine "Follow" butonu gorunur (creator mode aciksa)
|
|
401
|
+
- Bu durumda "Daha fazla" > "Baglanti kur" yolunu izle
|
|
402
|
+
- 3. derece ve uzerindeki kisilere istek gonderirken LinkedIn genellikle not veya e-posta ister
|
|
403
|
+
|
|
404
|
+
### 3.3 Mesaj Gonderme
|
|
405
|
+
|
|
406
|
+
#### 3.3.1 Mesajlasma Sayfasindan
|
|
407
|
+
|
|
408
|
+
**Adimlar:**
|
|
409
|
+
1. `/messaging/` sayfasina git
|
|
410
|
+
2. "Yeni mesaj" butonuna tikla
|
|
411
|
+
3. Alici alanina isim yaz
|
|
412
|
+
4. Autocomple listesinden kisiyi sec
|
|
413
|
+
5. Mesaj alanina metni yaz
|
|
414
|
+
6. "Gonder" butonuna tikla
|
|
415
|
+
|
|
416
|
+
#### 3.3.2 Profil Sayfasindan
|
|
417
|
+
|
|
418
|
+
**Adimlar:**
|
|
419
|
+
1. `/in/KULLANICIADI/` sayfasina git
|
|
420
|
+
2. "Mesaj" butonuna tikla
|
|
421
|
+
3. Sag altta mini mesaj kutusu acilir
|
|
422
|
+
4. Mesaj alanina metni yaz
|
|
423
|
+
5. "Gonder" butonuna tikla
|
|
424
|
+
|
|
425
|
+
**Dikkat:**
|
|
426
|
+
- Sadece 1. derece baglantilara ucretsiz mesaj gonderilebilir
|
|
427
|
+
- 2. ve 3. derece icin InMail (premium) gerekir
|
|
428
|
+
- Grup uyeleri ve etkinlik katilimcilarina da mesaj gonderilebilir
|
|
429
|
+
|
|
430
|
+
### 3.4 Yorum Yapma
|
|
431
|
+
|
|
432
|
+
**Adimlar:**
|
|
433
|
+
1. Gonderiyi bul (feed'de veya direkt URL ile)
|
|
434
|
+
2. "Yorum" butonuna tikla
|
|
435
|
+
3. Yorum alani gorunur (contenteditable div)
|
|
436
|
+
4. Metni yaz
|
|
437
|
+
5. "Gonder" / "Post" butonuna tikla
|
|
438
|
+
|
|
439
|
+
**Dikkat:**
|
|
440
|
+
- Yorum alani da Quill editor kullanir (contenteditable)
|
|
441
|
+
- Mention yapma: "@" yazinca oneri listesi cikar
|
|
442
|
+
- Hashtag: "#" ile basla
|
|
443
|
+
|
|
444
|
+
### 3.5 Tepki Verme (Reaction)
|
|
445
|
+
|
|
446
|
+
**Basit Begeni:**
|
|
447
|
+
1. Gonderinin altindaki "Begen" butonuna tikla (tek tikla)
|
|
448
|
+
|
|
449
|
+
**Diger Tepkiler:**
|
|
450
|
+
1. "Begen" butonunun uzerine gelin (hover) veya basili tutun
|
|
451
|
+
2. Tepki paneli belirmesini bekleyin (~500ms)
|
|
452
|
+
3. Istenen tepkiye tiklayin
|
|
453
|
+
|
|
454
|
+
### 3.6 Yeniden Paylasma (Repost)
|
|
455
|
+
|
|
456
|
+
**Adimlar:**
|
|
457
|
+
1. "Yeniden paylas" butonuna tikla
|
|
458
|
+
2. Menu acilir:
|
|
459
|
+
- "Aninda yeniden paylas" - Direkt paylasir
|
|
460
|
+
- "Dusuncelerinizle paylasin" - Modal acar, yorum ekleyerek paylasir
|
|
461
|
+
3. Secim yapip tikla
|
|
462
|
+
|
|
463
|
+
### 3.7 Sirket Takip Etme
|
|
464
|
+
|
|
465
|
+
**Adimlar:**
|
|
466
|
+
1. `/company/SIRKET_ADI/` sayfasina git
|
|
467
|
+
2. "Takip et" / "Follow" butonuna tikla
|
|
468
|
+
|
|
469
|
+
| Oge | Selector |
|
|
470
|
+
|-----|----------|
|
|
471
|
+
| Takip Et | `button[aria-label*='Takip' i]` veya `button[aria-label*='Follow' i]` |
|
|
472
|
+
|
|
473
|
+
### 3.8 Gruba Katilma
|
|
474
|
+
|
|
475
|
+
**Adimlar:**
|
|
476
|
+
1. `/groups/GRUP_ID/` sayfasina git
|
|
477
|
+
2. "Katil" / "Join" butonuna tikla
|
|
478
|
+
3. Bazi gruplar onay gerektirir (bekleme sureci)
|
|
479
|
+
|
|
480
|
+
### 3.9 Is Basvurusu
|
|
481
|
+
|
|
482
|
+
**Adimlar:**
|
|
483
|
+
1. Is ilanini ac
|
|
484
|
+
2. "Kolay Basvuru" veya "Basvur" butonuna tikla
|
|
485
|
+
3. Basvuru formu acilir (multi-step olabilir)
|
|
486
|
+
4. Gerekli alanlari doldur
|
|
487
|
+
5. "Gonder" / "Submit" tikla
|
|
488
|
+
|
|
489
|
+
**Dikkat:**
|
|
490
|
+
- "Kolay Basvuru" LinkedIn uzerinden yapilir
|
|
491
|
+
- "Basvur" dis siteye yonlendirir
|
|
492
|
+
- Ozgecmis yuklemek gerekebilir
|
|
493
|
+
|
|
494
|
+
---
|
|
495
|
+
|
|
496
|
+
## 4. Gorsel Boyutlari
|
|
497
|
+
|
|
498
|
+
LinkedIn'de kullanilan tum gorsel boyutlari ve onerileri:
|
|
499
|
+
|
|
500
|
+
### 4.1 Gonderi Gorselleri
|
|
501
|
+
|
|
502
|
+
| Tur | Boyut (px) | En-Boy Orani | Dosya Boyutu |
|
|
503
|
+
|-----|-----------|--------------|-------------|
|
|
504
|
+
| Tekli Gorsel (Yatay) | 1200 x 627 | 1.91:1 | Maks 10MB |
|
|
505
|
+
| Tekli Gorsel (Kare) | 1200 x 1200 | 1:1 | Maks 10MB |
|
|
506
|
+
| Tekli Gorsel (Dikey) | 1080 x 1350 | 4:5 | Maks 10MB |
|
|
507
|
+
| Carousel Slayt | 1080 x 1080 veya 1080 x 1350 | 1:1 veya 4:5 | PDF: maks 100MB |
|
|
508
|
+
| Link Onizleme Gorseli | 1200 x 627 | 1.91:1 | Otomatik cekilir |
|
|
509
|
+
|
|
510
|
+
### 4.2 Profil Gorselleri
|
|
511
|
+
|
|
512
|
+
| Tur | Boyut (px) | Aciklama |
|
|
513
|
+
|-----|-----------|----------|
|
|
514
|
+
| Profil Fotografi | 400 x 400 | Minimum 200x200, daire olarak kirpilir |
|
|
515
|
+
| Arka Plan Fotografi (Banner) | 1584 x 396 | Kapak gorseli |
|
|
516
|
+
|
|
517
|
+
### 4.3 Sirket Sayfasi Gorselleri
|
|
518
|
+
|
|
519
|
+
| Tur | Boyut (px) | Aciklama |
|
|
520
|
+
|-----|-----------|----------|
|
|
521
|
+
| Sirket Logosu | 300 x 300 | Kare format |
|
|
522
|
+
| Sirket Kapak Gorseli | 1128 x 191 | Yatay banner |
|
|
523
|
+
| Sirket Hayat Sekmesi | 900 x 600 | Hayat sekmesi hero gorseli |
|
|
524
|
+
| Sirket Hayat Modulu | 264 x 176 | Kucuk kare gorseller |
|
|
525
|
+
|
|
526
|
+
### 4.4 Diger Gorseller
|
|
527
|
+
|
|
528
|
+
| Tur | Boyut (px) |
|
|
529
|
+
|-----|-----------|
|
|
530
|
+
| Etkinlik Kapak | 1776 x 444 |
|
|
531
|
+
| Haber Bulteni Kapak | 744 x 400 |
|
|
532
|
+
| Makale Kapak | 744 x 400 |
|
|
533
|
+
| Grup Logosu | 400 x 400 |
|
|
534
|
+
| Grup Kapak | 1776 x 444 |
|
|
535
|
+
|
|
536
|
+
### 4.5 Video Ozellikleri
|
|
537
|
+
|
|
538
|
+
| Ozellik | Deger |
|
|
539
|
+
|---------|-------|
|
|
540
|
+
| Minimum Cozunurluk | 256 x 144 |
|
|
541
|
+
| Maksimum Cozunurluk | 4096 x 2304 (4K) |
|
|
542
|
+
| Onerilen Cozunurluk | 1920 x 1080 (1080p) |
|
|
543
|
+
| Maks Dosya Boyutu | 5 GB |
|
|
544
|
+
| Maks Sure | 15 dakika |
|
|
545
|
+
| Desteklenen Formatlar | MP4, MOV, AVI, MKV |
|
|
546
|
+
| Onerilen FPS | 30 |
|
|
547
|
+
| Onerilen Bit Rate | 5 Mbps (1080p) |
|
|
548
|
+
|
|
549
|
+
---
|
|
550
|
+
|
|
551
|
+
## 5. Hiz Sinirlari (Rate Limiting)
|
|
552
|
+
|
|
553
|
+
LinkedIn, otomasyon ve spam'e karsi katı sinirlar uygular. Bu sinirlar hesap turune, hesap yasina ve aktivite gecmisine gore degisir.
|
|
554
|
+
|
|
555
|
+
### 5.1 Baglanti Istegi Sinirlari
|
|
556
|
+
|
|
557
|
+
| Metrik | Sinir | Notlar |
|
|
558
|
+
|--------|-------|--------|
|
|
559
|
+
| Haftalik baglanti istegi | ~100-200 | Hesap yasina ve ture gore degisir |
|
|
560
|
+
| Gunluk baglanti istegi | ~20-25 | Guvenli sinir |
|
|
561
|
+
| Not ekli baglanti istegi | Daha az kisitlama | LinkedIn not eklenmis istekleri tercih eder |
|
|
562
|
+
| Notsuz baglanti istegi | Daha katı sinir | Cok hizli notsuz istek ban sebebi |
|
|
563
|
+
| Bekleyen istek limiti | ~1000 | Cevapsiz istekler bu limite dahil |
|
|
564
|
+
|
|
565
|
+
**Guvenli pratik:** Gunde 10-15 baglanti istegi, aralarinda 30-60 saniye bekleme. Haftada 70'i gecme.
|
|
566
|
+
|
|
567
|
+
### 5.2 Mesaj Sinirlari
|
|
568
|
+
|
|
569
|
+
| Metrik | Sinir |
|
|
570
|
+
|--------|-------|
|
|
571
|
+
| Gunluk mesaj (1. derece) | ~100-150 |
|
|
572
|
+
| Aylik InMail (Premium) | 5-30 (plana bagli) |
|
|
573
|
+
| Grup mesaji | Sinirli (spam koruması) |
|
|
574
|
+
| Toplu mesaj (broadcast) | Maks 50 alici |
|
|
575
|
+
|
|
576
|
+
**Guvenli pratik:** Gunde 20-30 mesaj, aralarinda 45-90 saniye bekleme.
|
|
577
|
+
|
|
578
|
+
### 5.3 Arama Sinirlari
|
|
579
|
+
|
|
580
|
+
| Metrik | Sinir |
|
|
581
|
+
|--------|-------|
|
|
582
|
+
| Ucretsiz hesap aylik arama | ~300 profil goruntulemesi |
|
|
583
|
+
| Ticari kullanim siniri | ~100 arama/ay sonrasi uyari |
|
|
584
|
+
| Sales Navigator | Sinir yuksek ama mevcut |
|
|
585
|
+
| Arama sonuc sayfasi | Maks 100 sayfa (1000 sonuc) |
|
|
586
|
+
|
|
587
|
+
**Dikkat:** "Ticari kullanim siniri" uyarisi goruldugunde aramalar kisitlanir. Bu sinir ay sonunda sifirlanir.
|
|
588
|
+
|
|
589
|
+
### 5.4 Profil Goruntulemesi
|
|
590
|
+
|
|
591
|
+
| Metrik | Sinir |
|
|
592
|
+
|--------|-------|
|
|
593
|
+
| Gunluk profil goruntulemesi | ~80-150 |
|
|
594
|
+
| Saatlik profil goruntulemesi | ~20-30 |
|
|
595
|
+
| Anonim goruntuleme | Profil ayarlarindan acilamadiginda sinir daha dusuk |
|
|
596
|
+
|
|
597
|
+
**Guvenli pratik:** Saatte 10-15 profil, gunluk maks 80.
|
|
598
|
+
|
|
599
|
+
### 5.5 Gonderi ve Yorum Sinirlari
|
|
600
|
+
|
|
601
|
+
| Metrik | Sinir |
|
|
602
|
+
|--------|-------|
|
|
603
|
+
| Gunluk gonderi | ~20-30 (pratik sinir ~3-5 kaliteli gonderi) |
|
|
604
|
+
| Gunluk yorum | ~50-100 |
|
|
605
|
+
| Saatlik yorum | ~15-20 |
|
|
606
|
+
| Gunluk tepki (reaction) | ~100-200 |
|
|
607
|
+
|
|
608
|
+
### 5.6 Takip Sinirlari
|
|
609
|
+
|
|
610
|
+
| Metrik | Sinir |
|
|
611
|
+
|--------|-------|
|
|
612
|
+
| Gunluk takip | ~50-100 |
|
|
613
|
+
| Toplam takip | 30.000 (kisi + sirket + hashtag) |
|
|
614
|
+
|
|
615
|
+
---
|
|
616
|
+
|
|
617
|
+
## 6. Anti-Bot Algilama ve Guvenli Pratikler
|
|
618
|
+
|
|
619
|
+
LinkedIn, tum sosyal medya platformlari arasinda en agresif bot algilama sistemine sahiptir. Asagida bilinen tetikleyiciler ve guvenli pratikler detayli olarak aciklanmistir.
|
|
620
|
+
|
|
621
|
+
### 6.1 Bilinen Tetikleyiciler (Triggers)
|
|
622
|
+
|
|
623
|
+
#### 6.1.1 Hiz Kaynakli Tetikleyiciler
|
|
624
|
+
- **Cok hizli sayfa gecisleri:** 3 saniyeden kisa surede sayfalar arasi gezinme
|
|
625
|
+
- **Aninda islem:** Sayfa acilir acilmaz tiklama (insanlar en az 1-2 saniye bakar)
|
|
626
|
+
- **Toplu islem hizi:** Art arda 10+ baglanti istegi gondermek (aralarinda bekleme olmadan)
|
|
627
|
+
- **Klavye hizi:** Insanustu hizda yazma (300+ WPM)
|
|
628
|
+
- **Surekli aktivite:** Mola vermeden saatlerce islem yapma
|
|
629
|
+
|
|
630
|
+
#### 6.1.2 Desen Kaynakli Tetikleyiciler
|
|
631
|
+
- **Tekrarlayan eylemler:** Ayni islemi mekanik sekilde tekrarlama (tikla-bekle-tikla-bekle)
|
|
632
|
+
- **Dogal olmayan navigasyon:** URL'ye direkt gitme yerine navigasyon menu kullanmamak
|
|
633
|
+
- **Belirli saatlerde calisma:** Gece 3'te yogun aktivite
|
|
634
|
+
- **Ayni mesaj kopyala-yapistir:** Birebir ayni metni birden fazla kisiye gonderme
|
|
635
|
+
- **Mouse hareketi eksikligi:** Tiklamadan once mouse hareketi olmamasi
|
|
636
|
+
|
|
637
|
+
#### 6.1.3 Teknik Tetikleyiciler
|
|
638
|
+
- **navigator.webdriver = true:** Selenium/Playwright varsayilan olarak bunu `true` yapar
|
|
639
|
+
- **Headless browser kullnimi:** Headless mod algilanabilir
|
|
640
|
+
- **Chrome DevTools acik:** CDP baglantisi izlenebilir (ancak nadiren)
|
|
641
|
+
- **WebGL/Canvas fingerprinting:** Bot browser'lar farkli fingerprint verir
|
|
642
|
+
- **User-Agent tutarsizligi:** Platform bilgisi ile browser ozellikleri uyusmamasi
|
|
643
|
+
- **Automation flag'leri:** `--enable-automation`, `--remote-debugging-port` gibi flag'ler
|
|
644
|
+
|
|
645
|
+
#### 6.1.4 Hesap Kaynakli Tetikleyiciler
|
|
646
|
+
- **Yeni hesap + yogun aktivite:** Yeni hesaplarda sinirlar cok daha dusuk
|
|
647
|
+
- **Dusuk kabul orani:** Baglanti isteklerinin cogu reddediliyorsa
|
|
648
|
+
- **Cok sayida rapor:** Diger kullanicilarin hesabi raporlamasi
|
|
649
|
+
- **Profil eksikligi:** Foto, baslik, deneyim olmayan hesaplardan gelen istekler
|
|
650
|
+
|
|
651
|
+
### 6.2 LinkedIn'in Algilama Mekanizmalari
|
|
652
|
+
|
|
653
|
+
1. **CAPTCHA/Dogrulama:** Suphe durumunda e-posta veya telefon dogrulamasi ister
|
|
654
|
+
2. **Gecici Kisitlama:** "Hesabiniz gecici olarak kisitlandi" mesaji (1-7 gun)
|
|
655
|
+
3. **Kalici Kisitlama:** Belirli ozelliklerin kapatilmasi (baglanti istegi gonderme, mesajlasma)
|
|
656
|
+
4. **Hesap Askiya Alma:** Ciddi ihlallerde hesap tamamen askiya alinir
|
|
657
|
+
5. **Kalici Ban:** Tekrarlayan ihlallerde hesap silinir
|
|
658
|
+
|
|
659
|
+
### 6.3 Guvenli Otomasyon Pratikleri
|
|
660
|
+
|
|
661
|
+
#### 6.3.1 Browser Ayarlari
|
|
662
|
+
|
|
663
|
+
```
|
|
664
|
+
Zorunlu:
|
|
665
|
+
- navigator.webdriver = false (Object.defineProperty ile override)
|
|
666
|
+
- --disable-blink-features=AutomationControlled
|
|
667
|
+
- --enable-automation flag'ini KALDIRMAK
|
|
668
|
+
- Gercek Chrome profili kullan (cookie'ler, gecmis, yer imleri dahil)
|
|
669
|
+
- Headless mod KULLANMA, headed mod kullan
|
|
670
|
+
- Gercek User-Agent (profildeki Chrome versiyonuyla uyumlu)
|
|
671
|
+
```
|
|
672
|
+
|
|
673
|
+
Bu proje zaten CDP ile gercek Chrome profiline baglanir, bu da en guvenli yaklasimdir. `--enable-automation` flag'i kaldirilir ve `webdriver` property'si override edilir.
|
|
674
|
+
|
|
675
|
+
#### 6.3.2 Zamanlama
|
|
676
|
+
|
|
677
|
+
```
|
|
678
|
+
Eylemler arasi bekleme:
|
|
679
|
+
- Sayfa yukleme sonrasi: 2-5 saniye (rastgele)
|
|
680
|
+
- Tiklama oncesi: 0.5-2 saniye (rastgele)
|
|
681
|
+
- Yazma hizi: 50-150ms per character (insan benzeri)
|
|
682
|
+
- Islemler arasi: 15-60 saniye (rastgele)
|
|
683
|
+
- Toplu islemler arasi: 30-120 saniye (rastgele)
|
|
684
|
+
- Oturum suresi: Maks 30-45 dakika, sonra mola
|
|
685
|
+
- Gunluk toplam: Maks 2-3 saat aktif kullanim
|
|
686
|
+
```
|
|
687
|
+
|
|
688
|
+
**Rastgelelik onemli:** Sabit bekleme sureleri (ornegin her seferinde tam 5 saniye) bot gibi gorunur. Her zaman rastgele bir aralikta bekleme yap.
|
|
689
|
+
|
|
690
|
+
#### 6.3.3 Insan Benzeri Davranislar
|
|
691
|
+
|
|
692
|
+
- **Scroll yap:** Sayfayi yukari-asagi kaydir (gercek kullanicilar boyle yapar)
|
|
693
|
+
- **Profillere bak:** Baglanti istegi gondermeden once profili 3-5 saniye incele
|
|
694
|
+
- **Farkli islemler yap:** Sadece baglanti istegi degil, ara sira gonderi oku, yorum yap, begen
|
|
695
|
+
- **Organik navigasyon:** Bazen URL yerine menu butonlariyla gezin
|
|
696
|
+
- **Mouse hareketi:** Tiklanacak ogeden once baska yerlere de mouse gotur (Playwright'ta `page.mouse.move()`)
|
|
697
|
+
|
|
698
|
+
#### 6.3.4 Hacim Sinirlari (Gunluk Guvenli Limitler)
|
|
699
|
+
|
|
700
|
+
| Islem | Guvenli Gunluk Sinir | Maks (riskli) |
|
|
701
|
+
|-------|----------------------|--------------|
|
|
702
|
+
| Baglanti istegi | 10-15 | 25 |
|
|
703
|
+
| Mesaj gonderme | 15-25 | 50 |
|
|
704
|
+
| Profil goruntuleme | 40-60 | 100 |
|
|
705
|
+
| Gonderi begeni | 30-50 | 100 |
|
|
706
|
+
| Yorum yapma | 10-20 | 40 |
|
|
707
|
+
| Gonderi paylasma | 2-3 | 5 |
|
|
708
|
+
|
|
709
|
+
#### 6.3.5 Uyari Isaretleri ve Tepkiler
|
|
710
|
+
|
|
711
|
+
**"Dogrulama gerekli" ekrani goruldugunde:**
|
|
712
|
+
1. Islemi HEMEN durdur
|
|
713
|
+
2. Kullanicinin manuel dogrulama yapmasini bekle
|
|
714
|
+
3. En az 24 saat aktiviteyi azalt
|
|
715
|
+
4. Sonraki gunlerde sinirlari %50 dusur
|
|
716
|
+
|
|
717
|
+
**"Gecici kisitlama" mesaji goruldugunde:**
|
|
718
|
+
1. Tum otomasyonu DURDUR
|
|
719
|
+
2. 24-48 saat bekle
|
|
720
|
+
3. Kisitlama kalktiktan sonra yavas baslat (normal sinirlarin %25'i ile)
|
|
721
|
+
4. 1 hafta icinde kademeli olarak normal seviyeye don
|
|
722
|
+
|
|
723
|
+
### 6.4 LinkedIn'in Cookie ve Oturum Yonetimi
|
|
724
|
+
|
|
725
|
+
LinkedIn su onemli cookie'leri kullanir:
|
|
726
|
+
|
|
727
|
+
| Cookie | Aciklama |
|
|
728
|
+
|--------|----------|
|
|
729
|
+
| `li_at` | Ana oturum cookie'si (authentication) |
|
|
730
|
+
| `JSESSIONID` | CSRF token iceren oturum ID'si |
|
|
731
|
+
| `bcookie` | Browser cookie (fingerprinting) |
|
|
732
|
+
| `bscookie` | Guvenli browser cookie |
|
|
733
|
+
| `li_rm` | "Beni hatirla" cookie'si |
|
|
734
|
+
| `lang` | Dil tercihi (v=2&lang=tr) |
|
|
735
|
+
| `lidc` | LinkedIn DC routing cookie |
|
|
736
|
+
| `UserMatchHistory` | Reklam hedefleme |
|
|
737
|
+
| `li_sugr` | Oneri motoru |
|
|
738
|
+
|
|
739
|
+
**ONEMLI:** `JSESSIONID` cookie'si CSRF korumasinda kullanilir. API istekleri yaparken `csrf-token` header'i olarak bu degerin tirnak icindeki kismi gonderilmelidir. Ancak browser otomasyon icin bu genellikle otomatik yonetilir.
|
|
740
|
+
|
|
741
|
+
---
|
|
742
|
+
|
|
743
|
+
## 7. Modal ve Dialog'lar
|
|
744
|
+
|
|
745
|
+
### 7.1 Gonderi Olusturma Modali
|
|
746
|
+
|
|
747
|
+
**Tetikleyici:** Feed'deki "Gonderi baslat" butonuna tiklandiginda acilir.
|
|
748
|
+
|
|
749
|
+
**Yapisi:**
|
|
750
|
+
```
|
|
751
|
+
div.artdeco-modal (overlay)
|
|
752
|
+
└── div.artdeco-modal__content
|
|
753
|
+
├── header (Profil resmi + gorunurluk)
|
|
754
|
+
├── div.ql-editor (metin editoru, contenteditable)
|
|
755
|
+
├── ek icerik alani (gorsel/video/belge onizleme)
|
|
756
|
+
└── footer
|
|
757
|
+
├── arac cubugu (emoji, hashtag, medya ekle butonlari)
|
|
758
|
+
└── "Gonderi paylas" butonu
|
|
759
|
+
```
|
|
760
|
+
|
|
761
|
+
**Modal Selector:**
|
|
762
|
+
- `div[role='dialog']` (birden fazla dialog olabilir, ayirt etmek icin `aria-label` kontrol et)
|
|
763
|
+
- `.artdeco-modal--layer-default` veya `.share-box`
|
|
764
|
+
- Kapatma: `button[aria-label*='Kapat' i]` veya `.artdeco-modal__dismiss`
|
|
765
|
+
|
|
766
|
+
### 7.2 Baglanti Istegi Modali
|
|
767
|
+
|
|
768
|
+
**Tetikleyici:** "Baglanti kur" butonuna tiklandiginda (ortak kurum/okul yoksa veya email gerekiyorsa).
|
|
769
|
+
|
|
770
|
+
**Yapisi:**
|
|
771
|
+
```
|
|
772
|
+
div.artdeco-modal
|
|
773
|
+
└── div.artdeco-modal__content
|
|
774
|
+
├── header ("Davet nasil gonderilsin?" veya "Kisinin e-postasini girin")
|
|
775
|
+
├── icerik
|
|
776
|
+
│ ├── "E-posta" input (bazen)
|
|
777
|
+
│ └── "Not ekle" butonu (bazen)
|
|
778
|
+
└── footer
|
|
779
|
+
├── "Gonder" butonu (birincil)
|
|
780
|
+
└── "Iptal" butonu (ikincil)
|
|
781
|
+
```
|
|
782
|
+
|
|
783
|
+
**Senaryo 1 - Direkt gonderim:**
|
|
784
|
+
Baglanti butona tikla → Istek hemen gider, modal acilmaz.
|
|
785
|
+
|
|
786
|
+
**Senaryo 2 - Not ekleme modali:**
|
|
787
|
+
Baglanti butona tikla → Modal acilir → "Not ekle" → Textarea gorulur → Yaz → "Gonder"
|
|
788
|
+
|
|
789
|
+
**Senaryo 3 - E-posta gerekli:**
|
|
790
|
+
Baglanti butona tikla → Modal acilir → E-posta input → Yaz → "Gonder"
|
|
791
|
+
|
|
792
|
+
### 7.3 Mesaj Dialogu
|
|
793
|
+
|
|
794
|
+
**Tetikleyici:** "Mesaj" butonuna tiklandiginda (profil sayfasi veya mesajlasma).
|
|
795
|
+
|
|
796
|
+
**Turu:** Tam sayfa (messaging sayfasindan) veya mini popup (sag altta).
|
|
797
|
+
|
|
798
|
+
**Mini Popup Yapisi:**
|
|
799
|
+
```
|
|
800
|
+
div.msg-overlay-conversation-bubble
|
|
801
|
+
├── header (kisi adi, kucult/kapat butonlari)
|
|
802
|
+
├── mesaj gecmisi
|
|
803
|
+
└── form
|
|
804
|
+
├── div[contenteditable] (mesaj alani)
|
|
805
|
+
└── button (gonder)
|
|
806
|
+
```
|
|
807
|
+
|
|
808
|
+
**Tam Sayfa Yapisi:**
|
|
809
|
+
```
|
|
810
|
+
div.msg-thread
|
|
811
|
+
├── header (kisi bilgisi)
|
|
812
|
+
├── mesaj listesi (.msg-s-event-listitem)
|
|
813
|
+
└── form.msg-form
|
|
814
|
+
├── div.msg-form__contenteditable (mesaj alani)
|
|
815
|
+
├── ek araclar (dosya, emoji, gif)
|
|
816
|
+
└── button.msg-form__send-button (gonder)
|
|
817
|
+
```
|
|
818
|
+
|
|
819
|
+
### 7.4 Onay Dialoglari
|
|
820
|
+
|
|
821
|
+
LinkedIn cesitli islemlerde onay dialogu gosterir:
|
|
822
|
+
|
|
823
|
+
| Durum | Dialog Icerigi | Butonlar |
|
|
824
|
+
|-------|---------------|----------|
|
|
825
|
+
| Gonderi silme | "Gonderiyi silmek istediginizden emin misiniz?" | "Sil" / "Iptal" |
|
|
826
|
+
| Baglanti koparma | "Baglantiyi kaldirmak istediginizden emin misiniz?" | "Kaldir" / "Iptal" |
|
|
827
|
+
| Mesaj silme | "Bu mesaji silmek istediginizden emin misiniz?" | "Sil" / "Iptal" |
|
|
828
|
+
| Istegi geri cekme | "Daveti geri cekmek istediginizden emin misiniz?" | "Geri cek" / "Iptal" |
|
|
829
|
+
|
|
830
|
+
**Genel onay dialog selector'lari:**
|
|
831
|
+
- `div[role='alertdialog']` veya `div[role='dialog']`
|
|
832
|
+
- Onay butonu: `.artdeco-modal button.artdeco-button--primary`
|
|
833
|
+
- Iptal butonu: `.artdeco-modal button.artdeco-button--secondary`
|
|
834
|
+
|
|
835
|
+
### 7.5 Gorunurluk Secici Modali
|
|
836
|
+
|
|
837
|
+
Gonderi olusturma sirasinda "Herkes" butonuna tiklandiginda:
|
|
838
|
+
|
|
839
|
+
| Secenek | Aciklama |
|
|
840
|
+
|---------|----------|
|
|
841
|
+
| Herkes (Anyone) | Herkese acik |
|
|
842
|
+
| Yalnizca Baglantilar (Connections only) | Sadece 1. derece |
|
|
843
|
+
| Grup Uyeleri | Belirli bir gruba ozel |
|
|
844
|
+
|
|
845
|
+
### 7.6 Rapor/Sikayet Modali
|
|
846
|
+
|
|
847
|
+
Gonderinin uc nokta menusunden "Raporla" secildiginde:
|
|
848
|
+
- Cok adimli form
|
|
849
|
+
- Neden secimi (spam, yaniltici, uygunsuz icerik vb.)
|
|
850
|
+
- Opsiyonel aciklama
|
|
851
|
+
|
|
852
|
+
### 7.7 Yaygin Overlay'ler ve Popup'lar
|
|
853
|
+
|
|
854
|
+
| Overlay | Tetikleyici | Kapatma |
|
|
855
|
+
|---------|------------|---------|
|
|
856
|
+
| Cookie Uyarisi | Ilk ziyaret | `button[action-type='ACCEPT']` veya banner icindeki buton |
|
|
857
|
+
| Premium Teklifi | Cesitli islemler | `.artdeco-modal__dismiss` veya `button[aria-label*='Kapat' i]` |
|
|
858
|
+
| "Uygulamayi indir" banner | Mobil goruntuleme | `button[aria-label*='Kapat' i]` |
|
|
859
|
+
| Bildirim izni | Tarayici API | Tarayici seviyesinde ele al |
|
|
860
|
+
| Profil tamamlama | Profil ziyareti | Modal kapatma butonu |
|
|
861
|
+
|
|
862
|
+
---
|
|
863
|
+
|
|
864
|
+
## 8. Ek Teknik Bilgiler
|
|
865
|
+
|
|
866
|
+
### 8.1 LinkedIn'in Kullandigi Teknolojiler
|
|
867
|
+
|
|
868
|
+
- **Ember.js** (eski), **React** (yeni sayfalar) - karma kullanim
|
|
869
|
+
- **Quill.js** - Metin editoru (gonderi ve yorum alanlarinda)
|
|
870
|
+
- **ArtDeco Design System** - LinkedIn'in kendi tasarim sistemi (sinif adlari `artdeco-*` ile baslar)
|
|
871
|
+
- **Voyager API** - LinkedIn'in dahili REST API'si (browser isteklerinde gorulur)
|
|
872
|
+
|
|
873
|
+
### 8.2 DOM Yapisi Ipuclari
|
|
874
|
+
|
|
875
|
+
- LinkedIn'in DOM'u genellikle cok derin (20+ seviye nesting)
|
|
876
|
+
- `ember-view` sinifi eski sayfalarda bulunur
|
|
877
|
+
- `scaffold-layout` ana sayfa iskeleti icin kullanilir
|
|
878
|
+
- `authentication-outlet` ve `app__container` ust seviye konteynerler
|
|
879
|
+
- Feed gonderileri `occludable-update` sinifli container'lar icinde yer alir (lazy loading/virtualization)
|
|
880
|
+
|
|
881
|
+
### 8.3 Lazy Loading ve Sonsuz Scroll
|
|
882
|
+
|
|
883
|
+
LinkedIn feed sayfasi sonsuz scroll kullanir:
|
|
884
|
+
- Gonderiler sayfa asagi indikce yuklenir
|
|
885
|
+
- Yuklenmemis gonderiler icin scroll yapilmasi gerekir
|
|
886
|
+
- `window.scrollTo()` veya `page.mouse.wheel()` kullanilabilir
|
|
887
|
+
- Her scroll sonrasi 2-3 saniye beklenmeli (icerik yuklemesi icin)
|
|
888
|
+
- Tipik olarak 5-10 gonderi ayni anda goruntulenir
|
|
889
|
+
|
|
890
|
+
### 8.4 Dil Destegi
|
|
891
|
+
|
|
892
|
+
LinkedIn arayuzu kullanicinin dil ayarina gore degisir. Selector'larda `aria-label` degerleri de bu dile gore degisir:
|
|
893
|
+
|
|
894
|
+
| Turkce | Ingilizce |
|
|
895
|
+
|--------|-----------|
|
|
896
|
+
| "Begen" | "Like" |
|
|
897
|
+
| "Yorum yap" | "Comment" |
|
|
898
|
+
| "Yeniden paylas" | "Repost" |
|
|
899
|
+
| "Gonder" | "Send" |
|
|
900
|
+
| "Baglanti kur" | "Connect" |
|
|
901
|
+
| "Takip et" | "Follow" |
|
|
902
|
+
| "Mesaj" | "Message" |
|
|
903
|
+
| "Gonderi paylas" | "Post" |
|
|
904
|
+
| "Gonderi baslat" | "Start a post" |
|
|
905
|
+
| "Daha fazla" | "More" |
|
|
906
|
+
|
|
907
|
+
**ONEMLI:** Selector'larda her iki dili de fallback olarak eklemek gerekir. `[aria-label*='baglanti' i]` ve `[aria-label*='Connect' i]` seklinde. `i` flag'i buyuk-kucuk harf duyarsiz esleme saglar (CSS4, Playwright destekler).
|
|
908
|
+
|
|
909
|
+
### 8.5 Yanit Kodlari ve Hata Mesajlari
|
|
910
|
+
|
|
911
|
+
LinkedIn sayfasinda gorulebilecek hata durumlari:
|
|
912
|
+
|
|
913
|
+
| Durum | Gorunum | Cozum |
|
|
914
|
+
|-------|---------|-------|
|
|
915
|
+
| 429 Too Many Requests | Sayfa yuklenmez veya bos gelir | Bekle, hizi dusur |
|
|
916
|
+
| Hesap kisitlamasi | Banner mesaji | Dur, kullaniciyi bilgilendir |
|
|
917
|
+
| CAPTCHA | Dogrulama ekrani | Dur, manuel cozum gerekir |
|
|
918
|
+
| Oturum sona erdi | Giris sayfasina yonlendirme | Tekrar login gerekir |
|
|
919
|
+
| "Something went wrong" | Hata sayfasi | Sayfayi yenile |
|
|
920
|
+
| Profil bulunamadi | 404 sayfasi | URL kontrol et |
|
|
921
|
+
|
|
922
|
+
### 8.6 Sayfa Yukleme Stratejisi
|
|
923
|
+
|
|
924
|
+
LinkedIn sayfalari SPA (Single Page Application) olarak calisir:
|
|
925
|
+
- Ilk yukleme yavastir (3-5 saniye)
|
|
926
|
+
- Sayfa ici navigasyon daha hizlidir (1-2 saniye)
|
|
927
|
+
- `page.goto()` kullanildiginda tam sayfa yuklemesi olur
|
|
928
|
+
- Navigasyon link'lerine tiklandiginda kismi yukleme olur (daha hizli ama selector bekleme gerekir)
|
|
929
|
+
|
|
930
|
+
**Onerilen strateji:**
|
|
931
|
+
1. `page.goto(url, { waitUntil: 'domcontentloaded' })` kullan (`networkidle` cok uzun surebilir)
|
|
932
|
+
2. Hedef elementi `page.waitForSelector(selector, { timeout: 10000 })` ile bekle
|
|
933
|
+
3. Ek olarak 1-2 saniye ekstra bekle (AJAX istekleri icin)
|
|
934
|
+
|
|
935
|
+
---
|
|
936
|
+
|
|
937
|
+
## 9. Sik Karsilasilan Sorunlar ve Cozumleri
|
|
938
|
+
|
|
939
|
+
### 9.1 Selector Degisiklikleri
|
|
940
|
+
|
|
941
|
+
LinkedIn sinif adlarini sik degistirir. Guvenilirlik sirasi:
|
|
942
|
+
1. `aria-label` (en guvenilir - erisilebilirlik standardi)
|
|
943
|
+
2. `role` (sabit - HTML standardi)
|
|
944
|
+
3. `data-control-name` (nispeten sabit)
|
|
945
|
+
4. `id` (nadiren degisir ama her element'te yok)
|
|
946
|
+
5. `class` icinde `artdeco-*` (nispeten sabit)
|
|
947
|
+
6. Obfuscated class adlari (EN AZ guvenilir - her build'de degisir)
|
|
948
|
+
|
|
949
|
+
### 9.2 Modal Kapanmama Sorunu
|
|
950
|
+
|
|
951
|
+
Bazen modal kapatma butonu calismaz:
|
|
952
|
+
- `Escape` tusuna bas (`page.keyboard.press('Escape')`)
|
|
953
|
+
- Modal disina tikla (`page.click('.artdeco-modal-overlay')`)
|
|
954
|
+
- Sayfayi yenile (son care)
|
|
955
|
+
|
|
956
|
+
### 9.3 Contenteditable Alanlara Yazma
|
|
957
|
+
|
|
958
|
+
LinkedIn'in Quill editor'u normal `fill()` ile her zaman calismaz:
|
|
959
|
+
- Oncelikle alana tikla (fokus al)
|
|
960
|
+
- `page.keyboard.type(text, { delay: 50 })` kullan
|
|
961
|
+
- Alternatif: `page.evaluate()` ile dogrudan DOM manipulasyonu (ama LinkedIn bunu algilayabilir)
|
|
962
|
+
- `pressSequentially()` de iyi calisir
|
|
963
|
+
|
|
964
|
+
### 9.4 Bos Feed/Yuklenmeyen Icerik
|
|
965
|
+
|
|
966
|
+
Feed bos gorunuyorsa:
|
|
967
|
+
- Scroll yap (lazy loading tetikle)
|
|
968
|
+
- `waitForSelector('.feed-shared-update-v2', { timeout: 15000 })` ile bekle
|
|
969
|
+
- Sayfa yenile
|
|
970
|
+
|
|
971
|
+
### 9.5 Popup/Banner Engelleri
|
|
972
|
+
|
|
973
|
+
Islem sirasinda beklenmeyen popup'lar cikarsa:
|
|
974
|
+
- "Premium" teklifi: `.artdeco-modal__dismiss` ile kapat
|
|
975
|
+
- Cookie banner: `button[action-type='ACCEPT']` ile kabul et
|
|
976
|
+
- Bildirim izni: Tarayici ayarlarindan engellenebilir
|
|
977
|
+
- "Uygulamayi indir": Kapatma butonuna tikla
|
|
978
|
+
|
|
979
|
+
---
|
|
980
|
+
|
|
981
|
+
## 10. Platform Spesifik Bilgiler
|
|
982
|
+
|
|
983
|
+
### 10.1 LinkedIn Karakter Sinirlari
|
|
984
|
+
|
|
985
|
+
| Alan | Sinir |
|
|
986
|
+
|------|-------|
|
|
987
|
+
| Gonderi metni | 3.000 karakter |
|
|
988
|
+
| Yorum | 1.250 karakter |
|
|
989
|
+
| Makale basligi | 100 karakter |
|
|
990
|
+
| Makale icerigi | 125.000 karakter |
|
|
991
|
+
| Baglanti istegi notu | 300 karakter |
|
|
992
|
+
| Mesaj | 8.000 karakter |
|
|
993
|
+
| Profil basligi (headline) | 220 karakter |
|
|
994
|
+
| Profil ozeti (about) | 2.600 karakter |
|
|
995
|
+
| Sirket aciklamasi | 2.000 karakter |
|
|
996
|
+
| Hashtag (gonderi basi onerilen) | 3-5 adet |
|
|
997
|
+
|
|
998
|
+
### 10.2 En Iyi Gonderi Zamanlari (Turkiye)
|
|
999
|
+
|
|
1000
|
+
| Gun | Saat | Neden |
|
|
1001
|
+
|-----|------|-------|
|
|
1002
|
+
| Sali-Persembe | 08:00-10:00 | Is baslangicindan once |
|
|
1003
|
+
| Sali-Persembe | 12:00-13:00 | Ogle arasi |
|
|
1004
|
+
| Carsamba | 09:00-11:00 | Hafta ortasi en yuksek etkilesim |
|
|
1005
|
+
|
|
1006
|
+
### 10.3 Algoritma Ipuclari
|
|
1007
|
+
|
|
1008
|
+
- Ilk 60 dakikadaki etkilesim gonderinin erisimini belirler
|
|
1009
|
+
- Yorum, begenden daha degerli (algoritmik olarak)
|
|
1010
|
+
- Dis link paylasimi erisimi dusurur (linki yoruma koy)
|
|
1011
|
+
- Carousel/belge gonderileri en yuksek erisimi alir
|
|
1012
|
+
- Video gonderileri uzun kalma suresi saglar
|
|
1013
|
+
- Hashtag kullanimi kesfedilebilirligi arttirir (3-5 arasi ideal)
|