Ukweqa umkhawulo wosesho lwe-LinkedIn ngokudlala nge-API

Umkhawulo

Kunomkhawulo onjalo ku-LinkedIn - Umkhawulo wokusetshenziswa kwezohwebo. Kungenzeka kakhulu ukuthi nawe, njengami kuze kube muva nje, awukaze uhlangane noma uzwe ngakho.

Ukweqa umkhawulo wosesho lwe-LinkedIn ngokudlala nge-API

Ingqikithi yomkhawulo ukuthi uma usebenzisa usesho lwabantu abangaphandle koxhumana nabo kaningi (awekho amamethrikhi aqondile, i-algorithm inquma ngokusekelwe ezenzweni zakho - ukuthi useshe kangaki futhi kangakanani, wengeza abantu), bese kuba umphumela wosesho. izokhawulelwa kumaphrofayili amathathu, esikhundleni sika-1000 (amakhasi ayi-100 azenzakalelayo, amaphrofayili ayi-10 ngekhasi ngalinye). Umkhawulo usethwa kabusha ekuqaleni kwenyanga ngayinye. Ngokwemvelo, ama-akhawunti e-premium awanawo lo mkhawulo.

Kodwa kungekudala, ngephrojekthi yezilwane ezifuywayo, ngaqala ukudlala kakhulu ngosesho lwe-LinkedIn futhi ngokuzumayo ngathola lo mkhawulo. Ngokwemvelo, angizange ngikuthande kakhulu lokhu, ngoba angizange ngiyisebenzise noma yiziphi izinjongo zokuthengisa, ngakho-ke umcabango wami wokuqala kwakuwukufunda umkhawulo bese uzama ukuzungeza.

[Ukucaciswa okubalulekile: izinto eziku-athikili zethulwa kuphela ngezinjongo zolwazi nezemfundo. Umbhali akakukhuthazi ukusetshenziswa kwazo ngezinjongo zokuthengisa.]

Sifunda inkinga

Sine: esikhundleni samaphrofayili ayishumi ane-pagination, ukusesha kubuyisela amathathu kuphela, emva kwalokho ibhulokhi "enesincomo" se-akhawunti ye-premium ifakiwe futhi ngezansi kukhona amaphrofayili alufiphele futhi angachofozeki.

Ngokushesha, isandla sifinyelela kukhonsoli yonjiniyela ukuze sibheke lawa maphrofayela afihliwe - mhlawumbe singasusa izitayela ezithile ezifiphalisayo, noma sikhiphe ulwazi kubhulokhi kumakhaphu. Kodwa, ngokulindelekile, lawa maphrofayili alungile izithombe zokubamba indawo futhi akukho lwazi olugciniwe.

Ukweqa umkhawulo wosesho lwe-LinkedIn ngokudlala nge-API

Kulungile, manje ake sibheke ithebhu Yenethiwekhi bese sibheka ukuthi eminye imiphumela yosesho ebuyisela amaphrofayili amathathu kuphela iyasebenza yini. Sithola isicelo esinentshisekelo kuso sokuthi "/api/search/blended" futhi sibheke impendulo.

Ukweqa umkhawulo wosesho lwe-LinkedIn ngokudlala nge-API

Amaphrofayili afika ngohlelo `luhlanganisiwe`, kodwa sekunezinhlaka eziyi-15 kulo, ezintathu zokuqala ziyizinto ezinolwazi olwengeziwe, into ngayinye iqukethe ulwazi ngephrofayili ethile (isibonelo, noma ngabe iphrofayili iyiprimiyamu. ).

Ukweqa umkhawulo wosesho lwe-LinkedIn ngokudlala nge-API

Ezilandelayo eziyi-12 zingamaphrofayili angempela - imiphumela yosesho, emithathu kuphela esizoyiboniswa. Njengoba usuvele uqagele, kukhombisa kuphela labo abathola ulwazi olwengeziwe (izinto ezintathu zokuqala). Isibonelo, uma uthatha impendulo kuphrofayili ngaphandle komkhawulo, uzothola izinhlangano ezingama-28 - izinto eziyi-10 ezinokungeziwe. ulwazi kanye namaphrofayili angu-18.

Phendula iphrofayela ngaphandle komkhawuloUkweqa umkhawulo wosesho lwe-LinkedIn ngokudlala nge-API
Ukweqa umkhawulo wosesho lwe-LinkedIn ngokudlala nge-API

Kungani kufika amaphrofayili angaphezu kwe-10, nakuba kucelwe i-10 ngqo, futhi abahlanganyeli noma iyiphi indlela ekubonisweni, ngisho nasekhasini elilandelayo ngeke abe khona - angazi okwamanje. Uma uhlaziya i-URL yesicelo, ungabona ukuthi count=10 (mangakhi amaphrofayili azobuyiselwa empendulweni, umkhawulo ongu-49).

Ukweqa umkhawulo wosesho lwe-LinkedIn ngokudlala nge-API

Ngingajabula ukuthola noma yikuphi ukuphawula ngalolu daba.

Ake sizame

Kulungile, into ebaluleke kakhulu manje esiyazi ngokuqinisekile ukuthi kukhona amaphrofayli amaningi empendulweni kunaleyo asibonisa yona. Lokhu kusho ukuthi singathola idatha eyengeziwe, ngaphandle komkhawulo. Ake sizame ukudonsa i-API ngokwethu, ngqo kusuka kukhonsoli, sisebenzisa ukulanda.

Ukweqa umkhawulo wosesho lwe-LinkedIn ngokudlala nge-API

Njengoba kulindelekile, sithola iphutha, 403. Lokhu kungenxa yokuphepha, lapha asithumeli ithokheni ye-CSRF (I-CSRF ku-Wikipedia. Kafushane, ithokheni eyingqayizivele yengezwa esicelweni ngasinye, ehlolwa kuseva ukuze kutholakale ubuqiniso).

Ukweqa umkhawulo wosesho lwe-LinkedIn ngokudlala nge-API

Ingakopishwa kusuka kunoma yisiphi esinye isicelo esiphumelele noma kumakhukhi, lapho igcinwe khona emkhakheni we-'JSESSIONID'.

Ungathola kuphi ithokheniIsihloko sesinye isicelo:

Ukweqa umkhawulo wosesho lwe-LinkedIn ngokudlala nge-API

Noma kusuka kumakhukhi, ngqo ngekhonsoli:

Ukweqa umkhawulo wosesho lwe-LinkedIn ngokudlala nge-API

Ake sizame futhi, kulokhu sidlulisa izilungiselelo okufanele sizilande, lapho sicacisa ithokheni yethu ye-csrf njengepharamitha kunhlokweni.

Ukweqa umkhawulo wosesho lwe-LinkedIn ngokudlala nge-API

Impumelelo, sithola wonke amaphrofayili ayi-10. :tada:

Ngenxa yomehluko kumaheda, ukwakheka kwempendulo kuhluke kancane kulokho okutholwa esicelweni sokuqala. Ungathola isakhiwo esifanayo uma wengeza okuthi 'Accept:'application/vnd.linkedin.normalized+json+2.1' entweni yethu, eduze nethokheni ye-csrf.
Isibonelo sempendulo enesihloko esengeziweUkweqa umkhawulo wosesho lwe-LinkedIn ngokudlala nge-API

Okuningi mayelana nesihloko esithi Yamukela

Yini okulandelayo?

Khona-ke ungakwazi ukuhlela (ngesandla noma ngokuzenzakalelayo) ipharamitha `yokuqala`, ekhomba inkomba, kusukela lapho sizonikezwa amaphrofayili angu-10 (okuzenzakalelayo = 0) kuwo wonke umphumela wosesho. Ngamanye amazwi, ngokuyikhulisa ngo-10 ngemva kwesicelo ngasinye, sithola okukhiphayo okujwayelekile kwekhasi nekhasi, amaphrofayili ayi-10 ngesikhathi.

Kulesi sigaba nginedatha eyanele nenkululeko yokuqhubeka nokusebenza kuphrojekthi yezilwane ezifuywayo. Kodwa bekuzoba yisono ukungazami ukuveza le datha khona lapho, ngoba ibivele ikhona. Ngeke singene ku-Ember, esetshenziswa ngaphambili. I-jQuery ixhunywe kusayithi, futhi ngemva kokukhipha ulwazi lwe-syntax eyisisekelo ememori, ungakha okulandelayo emizuzwini embalwa.

ikhodi ye-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="/zu/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="/zu/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>`
    );
};

// Π΄Π΅Ρ€Π³Π°Π΅ΠΌ Π°ΠΏΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠΌ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ
const fetchProfiles = () => {
    // Ρ‚ΠΎΠΊΠ΅Π½
   const csrf = 'ajax:9082932176494192209';
    
   // ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с настройками запроса, ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Ρ‚ΠΎΠΊΠ΅Π½
   const settings = { headers: { 'csrf-token': csrf } }

    // ΡƒΡ€Π» запроса, с динамичСским индСксом старта Π² ΠΊΠΎΠ½Ρ†Π΅
   const url = `https://www.linkedin.com/voyager/api/search/blended?count=10&filters=List(geoRegion-%3Ejp%3A0,network-%3ES,resultType-%3EPEOPLE)&origin=FACETED_SEARCH&q=all&queryContext=List(spellCorrectionEnabled-%3Etrue,relatedSearchesEnabled-%3Etrue)&start=${nextItemIndex}`; 
    /* Π΄Π΅Π»Π°Π΅ΠΌ запрос, для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ профиля Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ€Π΅Π½Π΄Π΅Ρ€ Π±Π»ΠΎΠΊΠ°, ΠΈ послС ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ стартовый индСкс Π½Π° 10 */
    fetch(url, settings).then(response => response.json()).then(data => {
        data.elements[0].elements.forEach(createProfileBlock);
        nextItemIndex += 10;
});
};


// удаляСм всС ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ ΠΈΠ· списка
$('.search-results__list').find('li').remove();
// вставляСм ΠΊΠ½ΠΎΠΏΠΊΡƒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ
$('.search-results__list').after('<button id="load-more">Load More</button>');
// добавляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ
$('#load-more').addClass('artdeco-button').on('click', fetchProfiles);

// ставим ΠΏΠΎ умолчания индСкс профиля для запроса
window.nextItemIndex = 0;

Uma wenza lokhu ngokuqondile kukhonsoli ekhasini lokusesha, izongeza inkinobho elayisha amaphrofayela amasha angu-10 ngokuchofoza ngakunye futhi iwanikeze ohlwini. Kunjalo, shintsha ithokheni ne-URL kube kwedingekayo ngaphambi kokwenza lokhu. Ibhulokhi yephrofayela izoqukatha igama, indawo, indawo, isixhumanisi sephrofayela kanye nesithombe sesibambi.

Ukweqa umkhawulo wosesho lwe-LinkedIn ngokudlala nge-API

isiphetho

Ngakho, ngomzamo omncane, sakwazi ukuthola indawo ebuthaka futhi saphinde safuna ngaphandle kwemingcele. Kwanele ukuhlaziya idatha kanye nendlela yayo, bheka isicelo ngokwaso.

Angikwazi ukusho ukuthi lokhu kuyinkinga enkulu ye-LinkedIn, ngoba ayifaki usongo. Inzuzo enkulu elahlekile ngenxa yalezo "zokusebenza", ezikuvumela ukuthi ugweme ukukhokhela i-premium. Mhlawumbe impendulo enjalo yeseva iyadingeka ekusebenzeni okulungile kwezinye izingxenye zesayithi, noma kumane kuwubuvila babathuthukisi kanye nokuntuleka kwezinsiza ezingakuvumeli ukuthi kwenziwe kahle. (Umkhawulo uvele ngoJanuwari 2015; ngaphambi kwalokhu kwakungekho mkhawulo).

PS

Ngokwemvelo, ikhodi ye-jQuery iyisibonelo sakudala samakhono. Okwamanje ngidale isandiso sesiphequluli esifanelana nezidingo zami. Yengeza izinkinobho zokulawula futhi inikeze amaphrofayili agcwele anezithombe, inkinobho yesimemo nokuxhumana okuvamile. Futhi, iqoqa ngamandla izihlungi zezindawo, izinkampani, nezinye izinto, futhi ithola ithokheni kumakhukhi. Ngakho-ke asikho isidingo sokwenza i-hardcode noma yini. Yebo, yengeza izinkambu zezilungiselelo ezengeziwe, elithi "mangaki amaphrofayili ongawacela ngesikhathi, kuze kufike ku-49."

Ukweqa umkhawulo wosesho lwe-LinkedIn ngokudlala nge-API

Ngisalungisa lokhu kwengezwa futhi ngihlela ukukudedela emphakathini. Bhala uma unentshisekelo.

Source: www.habr.com

Engeza amazwana