Batasi
Ada batasan seperti itu pada LinkedIn -
Batas Penggunaan Komersial . Sangat mungkin bahwa Anda, seperti saya, sampai saat ini, belum pernah bertemu atau mendengar tentang dia.

Inti dari batasannya adalah jika Anda terlalu sering menggunakan pencarian orang di luar kontak Anda (tidak ada metrik yang tepat, algoritme akan menyelesaikannya, berdasarkan tindakan Anda - seberapa sering Anda mencari dan menambahkan orang), maka hasil pencarian akan terbatas pada tiga profil, bukan 1000 ( default 100 halaman, 10 profil per halaman). Batas diset ulang di awal setiap bulan. Secara alami,
akun premium tidak memiliki batasan seperti itu .
Tapi belum lama ini, untuk satu proyek kesayangan, saya mulai bermain banyak dengan pencarian di LinkedIn dan tiba-tiba mendapat batasan ini. Secara alami, saya tidak terlalu menyukai ini, karena saya tidak menggunakannya untuk tujuan komersial, jadi pikiran pertama adalah mempelajari batasannya dan mencoba mengatasinya.
[
Klarifikasi penting - materi dalam artikel disajikan hanya untuk tujuan informasi dan pendidikan. Penulis tidak menganjurkan penggunaannya untuk tujuan komersial. ]
Pembaruan penting - LinkedIn memperhitungkan kerentanan dan baru-baru ini memperbaikinya. Lewati dan plugin tidak lagi berfungsi.
Kami mempelajari masalahnya
Kami memiliki: alih-alih sepuluh profil dengan pagination, pencarian hanya mengembalikan tiga, setelah itu sebuah blok dengan "rekomendasi" dari akun premium dimasukkan dan di bawah ini adalah profil yang buram dan tidak dapat diklik.
Segera, sebuah tangan menjangkau konsol pengembang untuk melihat profil tersembunyi ini - mungkin kita dapat menghapus beberapa gaya yang menempatkan blues, atau mengekstrak informasi dari blok di markup. Tapi, seperti yang diharapkan, profil ini hanya
gambar rintisan dan tidak menyimpan informasi apa pun.

Oke, sekarang mari kita lihat tab Network dan lihat apakah hasil pencarian alternatif kembali yang hanya mengembalikan tiga profil yang benar-benar berfungsi. Kami menemukan pertanyaan yang menarik bagi kami “/ api / search / blended” dan lihat jawabannya.

Profil datang dalam array `disertakan`, tetapi sudah ada 15 entitas di dalamnya. Dalam kasus ini, tiga dari mereka adalah objek dengan informasi tambahan, setiap objek berisi informasi pada profil tertentu (misalnya, adalah profil premium).

12 berikutnya adalah profil nyata - hasil pencarian, yang hanya tiga yang akan ditampilkan kepada kami. Seperti yang sudah bisa Anda tebak, itu hanya menunjukkan mereka yang menerima informasi tambahan (tiga objek pertama). Misalnya, jika Anda mengambil jawaban dari profil tanpa batas, maka 28 entitas akan datang - 10 objek dengan ext. informasi dan 18 profil.
Jawab untuk profil tanpa batas Mengapa ada lebih dari 10 profil, meskipun 10 diminta, dan mereka tidak berpartisipasi dalam tampilan, bahkan pada halaman berikutnya tidak akan - saya belum tahu. Jika Anda menganalisis url permintaan, Anda dapat melihat jumlah itu = 10 (berapa banyak profil yang dikembalikan dalam respons, maksimum 49).

Saya akan senang dengan komentar tentang hal ini.
Bereksperimen
Nah, yang paling penting sekarang kita tahu pasti - lebih banyak profil datang dalam jawaban daripada yang ditunjukkan kepada kita. Jadi kita bisa mendapatkan lebih banyak data, meskipun ada batasnya. Mari kita coba menarik api sendiri, langsung dari konsol, menggunakan fetch.

Diharapkan bahwa kami mendapatkan kesalahan 403. Ini karena keamanan, di sini kami tidak mengirim token CSRF (
CSRF di Wikipedia . Singkatnya, token unik ditambahkan ke setiap permintaan, yang diperiksa pada server untuk keaslian).

Itu dapat disalin dari permintaan sukses lainnya atau dari cookie, di mana ia disimpan di bidang 'JSESSIONID'.
Di mana menemukan tokenHeader permintaan lain:

Atau dari cookie, langsung melalui konsol:

Kami mencoba lagi, kali ini melewati pengaturan untuk mengambil, di mana kami menentukan csrf-token kami sebagai parameter di header.

Berhasil, kami mendapatkan semua 10 profil. : tada:
Karena perbedaan dalam tajuk, struktur respons sedikit berbeda dari apa yang ada dalam permintaan awal. Anda bisa mendapatkan struktur yang sama jika Anda menambahkan 'Terima:' aplikasi / vnd.linkedin.normalisasi + json + 2.1 'ke objek kami, di sebelah token csrf.
Contoh tanggapan dengan tajuk yang ditambahkan
Lebih lanjut tentang Header Terima
Apa selanjutnya
Kemudian Anda dapat mengedit (dengan tangan Anda atau mengotomatiskan) parameter `start`, menunjukkan indeks, mulai dari mana kita akan diberi 10 profil (default = 0) dari seluruh hasil pencarian. Dengan kata lain, menambahnya dengan 10 setelah setiap permintaan, kami mendapatkan pagination biasa, 10 profil sekaligus.
Pada tahap ini, saya memiliki cukup data dan kebebasan untuk terus bekerja pada proyek hewan peliharaan. Tapi itu dosa untuk tidak mencoba menampilkan data ini di tempat, karena mereka ada di tangan. Di Ember, yang digunakan di depan, kita tidak akan memanjat. JQuery terhubung ke situs, dan menggali pengetahuan tentang sintaks dasar dalam memori, Anda dapat membuat yang berikut dalam beberapa menit.
Kode JQuery const createProfileBlock = ({ headline, publicIdentifier, subline, title }) => { $('.search-results__list').append( `<li class="search-result search-result__occluded-item ember-view"> <div class="search-entity search-result search-result--person search-result--occlusion-enabled ember-view"> <div class="search-result__wrapper"> <div class="search-result__image-wrapper"> <a class="search-result__result-link ember-view" href="/in/${publicIdentifier}/"> <figure class="search-result__image"> <div class="ivm-image-view-model ember-view"> <img class="lazy-image ivm-view-attr__img--centered EntityPhoto-circle-4 presence-entity__image EntityPhoto-circle-4 loaded" src="http://www.userlogos.org/files/logos/give/Habrahabr3.png" /> </div> </figure> </a> </div> <div class="search-result__info pt3 pb4 ph0"> <a class="search-result__result-link ember-view" href="/in/${publicIdentifier}/"> <h3 class="actor-name-with-distance search-result__title single-line-truncate ember-view"> ${title.text} </h3> </a> <p class="subline-level-1 t-14 t-black t-normal search-result__truncate">${headline.text}</p> <p class="subline-level-2 t-12 t-black--light t-normal search-result__truncate">${subline.text}</p> </div> </div> </div> <li>` ); };
Jika Anda melakukan ini secara langsung di konsol pada halaman pencarian, itu akan menambahkan tombol yang memuat 10 profil baru setiap kali Anda mengklik, dan membuat mereka daftar. Tentu saja, token dan url sebelum ini berubah menjadi perlu. Blok profil akan berisi nama, posisi, lokasi, tautan ke profil dan gambar rintisan.

Kesimpulan
Dengan demikian, dengan upaya minimal, kami dapat menemukan titik lemah dan mendapatkan kembali pencarian kami tanpa batasan. Itu sudah cukup untuk menganalisis data dan jalur mereka, untuk melihat ke dalam permintaan itu sendiri.
Saya tidak bisa mengatakan bahwa ini adalah masalah serius bagi LinkedIn, karena itu tidak menimbulkan ancaman. Maksimumnya adalah laba yang hilang karena "putaran" seperti itu, yang memungkinkan untuk tidak membayar premi. Mungkin respons server semacam itu diperlukan agar bagian lain situs dapat berfungsi dengan benar, atau apakah ini hanya
kemalasan pengembang, kurangnya sumber daya yang tidak memungkinkan dilakukannya dengan baik. (Pembatasan muncul pada Januari 2015, sebelum batas ini tidak).
PS
PS lamaTentu saja, kode jQuery adalah contoh fitur yang agak primitif. Saat ini, saya telah membuat ekstensi untuk peramban agar sesuai dengan kebutuhan saya. Ini menambahkan tombol kontrol dan membuat profil lengkap dengan gambar, tombol undangan dan koneksi umum. Plus, secara dinamis mengumpulkan filter lokasi, perusahaan dan hal-hal lain, mengambil tanda dari cookie. Jadi Anda tidak perlu melakukan hardcode apa pun. Yah, itu menambah bidang pengaturan tambahan, ala "berapa banyak profil yang diminta sekaligus, hingga 49."

Saya masih mengerjakan pengaya ini dan saya berencana untuk meletakkannya di domain publik. Tulis jika Anda tertarik.
Dengan permintaan yang populer, pasang add-on di akses terbuka, saya membuat add-on untuk browser dan mempostingnya untuk penggunaan umum (gratis dan bahkan tanpa penambang). Di sana, tidak hanya fungsi bypass batas diterapkan, tetapi juga fasilitas lainnya.
Lihat dan unduh di sini -
adam4leos.imtqy.comKarena ini adalah versi alfa, jangan ragu untuk menulis kepada saya tentang bug, ide, dan bahkan UI chic yang
bodoh . Saya terus mengembangkan add-on dan secara berkala akan mengirim versi baru.
Pembaruan penting - LinkedIn memperhitungkan kerentanan dan baru-baru ini memperbaikinya. Lewati dan plugin tidak lagi berfungsi.