Ka gudubka xadka raadinta LinkedIn adiga oo ku ciyaaraya API

Xaddid

Waxaa jira xaddidaad noocaas ah oo ku saabsan LinkedIn - Xadka isticmaalka ganacsiga. Waxay u badan tahay in adiga, aniga oo kale ah ilaa dhowaan, aadan weligaa la kulmin ama maqlin.

Ka gudubka xadka raadinta LinkedIn adiga oo ku ciyaaraya API

Nuxurka xadka ayaa ah in haddii aad u isticmaasho raadinta dadka ka baxsan xiriiradaada marar badan (ma jiraan qiyaaso sax ah, algorithm ayaa go'aaminaya iyada oo ku saleysan ficilladaada - inta jeer iyo inta aad raadisay, dad lagu daray), ka dibna natiijada raadinta. Waxay ku koobnaan doontaa saddex profile, halkii ay ka ahaan lahaayeen 1000 (100 bog oo caadi ah, 10 profiles boggiiba). Xadka ayaa dib loo dajinayaa bilowga bil kasta. Dabiici ahaan, xisaabaadka qaaliga ah ma laha xaddidan.

Laakiin wakhti aan dheerayn ka hor, mashruuc xayawaan ah, waxaan bilaabay in aan wax badan ku ciyaaro raadinta LinkedIn oo si lama filaan ah u helay xaddidan. Dabiici ahaan, tan aad uma jecli, sababtoo ah uma isticmaalin arrimo ganacsi, markaa fikradayda ugu horreysa waxay ahayd inaan barto xaddidaadda oo aan isku dayo inaan ku wareego.

[Cadeyn muhiim ah: agabka maqaalka waxaa loo soo bandhigay oo kaliya ujeeddooyin macluumaad iyo waxbarasho. Qoraagu kuma dhiirigelinayo isticmaalkooda ujeedooyin ganacsi.]

Waxaan baraneynaa dhibaatada

Waxaan haynaa: halkii toban profiles oo leh pagination, raadintu waxay soo celisaa saddex kaliya, ka dib markaa block leh "talo-bixin" oo ah koontada premium ayaa la geliyey hoostana waa muuqaalo blur ah oo aan la gujin karin.

Isla markiiba, gacantu waxay soo gaadhaysaa console-ka horumariyaha si uu u eego muuqaalladan qarsoon - waxaa laga yaabaa inaan ka saarno qaar ka mid ah qaababka isku-dheellitirka ah, ama aan ka soo saarno macluumaadka xannibaadda calaamadaynta. Laakiin, aad loo filayo, profiles kuwanu waa kaliya sawirada meel hayaha warna lama hayo.

Ka gudubka xadka raadinta LinkedIn adiga oo ku ciyaaraya API

Hagaag, hadda aan eegno tab Shabakadda oo aan hubinno haddii natiijooyinka raadinta beddelka ah ee soo celinaya saddex profile oo keliya ay dhab ahaantii shaqeeyaan. Waxaan helnaa codsiga aan xiisayneyno ee "/api/search/blended" oo eeg jawaabta.

Ka gudubka xadka raadinta LinkedIn adiga oo ku ciyaaraya API

Profiles waxay ku yimaadaan qaab 'ka mid ah', laakiin waxaa horeyba ugu jiray 15 hay'ado. Xaaladdan, seddexda ugu horreeya ee iyaga ka mid ah waa walxo leh macluumaad dheeraad ah, shay kastaa wuxuu ka kooban yahay macluumaad ku saabsan profile gaar ah (tusaale, haddii profile-ku yahay premium). ).

Ka gudubka xadka raadinta LinkedIn adiga oo ku ciyaaraya API

12 ka soo socda waa profiles dhabta ah - natiijooyinka raadinta, kuwaas oo kaliya saddex ka mid ah ayaa nala tusi doonaa. Sida aad horeba u malayn karto, waxay muujinaysaa kaliya kuwa hela macluumaad dheeraad ah (saddexda shay ee ugu horreeya). Tusaale ahaan, haddii aad jawaabta ka soo qaadato profile aan xaddidnayn, waxaad heli doontaa 28 hay'adood - 10 walxood oo dheeraad ah. macluumaadka iyo 18 profiles.

Ka jawaab profile-ka bilaa xadKa gudubka xadka raadinta LinkedIn adiga oo ku ciyaaraya API
Ka gudubka xadka raadinta LinkedIn adiga oo ku ciyaaraya API

Waa maxay sababta in ka badan 10 profiles ay yimaadaan, in kasta oo 10 sax ah la codsado, oo sinaba ugama qaybqaataan bandhigga, xitaa bogga xiga ma noqon doonaan - Anigu garan maayo weli. Haddii aad falanqeyso URL-ka codsiga, waxaad arki kartaa tiradaas=10 (Immisa profile ayaa lagu soo celinayaa jawaabta, ugu badnaan 49).

Ka gudubka xadka raadinta LinkedIn adiga oo ku ciyaaraya API

Waan ku farxi lahaa inaan helo faallooyin ku saabsan arrintan.

Aan tijaabinno

Hagaag, waxa ugu muhiimsan ee aan hadda ognahay hubaal waa in ay jiraan profiles ka badan jawaabta ay ina tusaan. Tani waxay ka dhigan tahay inaan heli karno xog badan, inkastoo xadka. Aan isku dayno inaan API nafteena ka soo jiidno, si toos ah console-ka, anagoo adeegsanayna fetch.

Ka gudubka xadka raadinta LinkedIn adiga oo ku ciyaaraya API

Sida la filayo, waxaan helnaa qalad, 403. Tani waxay sabab u tahay amniga, halkan uma direyno calaamadda CSRF (CSRF ee Wikipedia. Si kooban, calaamad gaar ah ayaa lagu daraa codsi kasta, kaas oo laga hubinayo server-ka si sax ah).

Ka gudubka xadka raadinta LinkedIn adiga oo ku ciyaaraya API

Waxa laga koobiyn karaa codsi kasta oo kale oo lagu guulaysto ama buskudka, halka lagu kaydiyo goobta 'JSESSIONID'.

Halkee laga helaa calaamaddaMadaxa codsi kale:

Ka gudubka xadka raadinta LinkedIn adiga oo ku ciyaaraya API

Ama ka cookies, si toos ah iyada oo loo marayo console:

Ka gudubka xadka raadinta LinkedIn adiga oo ku ciyaaraya API

Aan mar kale isku dayno, markan waxaan gudbineynaa dejinta si aan u soo saarno, taas oo aan ku qeexeyno csrf-token sida halbeegga madaxa.

Ka gudubka xadka raadinta LinkedIn adiga oo ku ciyaaraya API

Guusha, waxaan helnay dhammaan 10 profiles. :tada:

Farqiga madaxyada awgeed, qaabka jawaabtu wax yar ayuu ka duwan yahay waxa lagu helay codsigii asalka ahaa. Waxaad heli kartaa isla qaab-dhismeed la mid ah haddii aad ku darto 'Aqbal:'application/vnd.linkedin.normalized+json+2.1' shaygayaga, oo ku xiga calaamada csrf.
Tusaale jawaab celin madax lagu darayKa gudubka xadka raadinta LinkedIn adiga oo ku ciyaaraya API

Wax badan oo ku saabsan madaxa Aqbal

Maxaa ku xiga?

Markaa waxaad wax ka beddeli kartaa (gacan ama otomaatig ah) cabbirka 'bilow', adigoo tilmaamaya tusmada, laga bilaabo kaas oo nala siin doono 10 profiles (default = 0) dhammaan natiijada raadinta. Si kale haddii loo dhigo, iyadoo lagu kordhinayo 10 codsi kasta ka dib, waxaan helnaa soo saarida bog-bog-bog caadiga ah, 10 profiles markiiba.

Marxaladdan waxaan haystay xog ku filan iyo xorriyad si aan u sii wato shaqada mashruuca xayawaanka. Laakiin waxay ahaan lahayd dembi haddii aan la isku dayin in xogtan lagu soo bandhigo isla goobta, maadaama ay horeba gacanta ugu jirtay. Ma geli doono Ember, kaas oo lagu isticmaalo xagga hore. jQuery waxay ku xidhnayd goobta, oo markaad qoday aqoonta syntax aasaasiga ah ee xusuusta, waxaad ku abuuri kartaa kuwan soo socda dhowr daqiiqo gudahood.

jQuery code

/* Ρ€Π΅Π½Π΄Π΅Ρ€ Π±Π»ΠΎΠΊΠ°, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ профиля ΠΈ вставляСм Π±Π»ΠΎΠΊ Π² список ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ эти Π΄Π°Π½Π½Ρ‹Π΅ */
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="/so/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="/so/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;

Haddii aad tan si toos ah ugu sameyso console-ka bogga raadinta, waxay ku dari doontaa badhan ku shubaya 10 profiles cusub oo gujis kasta oo ka dhigaya liis. Dabcan, u beddel calaamadda iyo URL-ka loo baahan yahay ka hor intaadan tan samayn. Xirmada astaanta guud waxay ka koobnaan doontaa magaca, booska, goobta, isku xirka bogga iyo sawirka meel hayaha.

Ka gudubka xadka raadinta LinkedIn adiga oo ku ciyaaraya API

gunaanad

Sidaa darteed, dadaalkii ugu yaraa, waxaan awoodnay inaan helno meesha daciifka ah oo aan dib uhelno raadintayada iyada oo aan xaddidneyn. Waxaa ku filan in la falanqeeyo xogta iyo dariiqeeda, fiiri codsiga laftiisa.

Ma dhihi karo in tani ay tahay dhibaato halis ah LinkedIn, sababtoo ah wax khatar ah ma keenayso. Ugu badnaan waa faa'iido luntay sababtoo ah "goobaha shaqada", kaas oo kuu ogolaanaya inaad iska ilaaliso bixinta lacagta caymiska. Waxaa laga yaabaa in jawaabta server-ka noocan oo kale ah ay lagama maarmaan u tahay hawlgalka saxda ah ee qaybaha kale ee goobta, ama waa caajisnimada horumarinta iyo la'aanta kheyraadka oo aan u oggolaan in si fiican loo qabto. (Xudidaadu waxay soo muuqatay Janaayo 2015; tan ka hor ma jirin xad).

PS

Dabiici ahaan, koodhka jQuery waa tusaale hore u ah awoodaha. Waqtigan xaadirka ah waxaan sameeyay balaadhinta browserka si ay ugu habboonaato baahiyahayga. Waxay ku darsataa badhamada xakamaynta waxayna soo bandhigtaa profiles buuxa oo leh sawirro, badhanka martiqaadka iyo xidhiidhada guud. Waxaa dheer, waxay si firfircoon u ururisaa filtarrada goobaha, shirkadaha, iyo waxyaabo kale, waxayna ka soo saartaa calaamad kuukiiska. Markaa looma baahnid in aad wax ku qorto. Hagaag, waxay ku darsataa goobo dheeri ah, la "Immisa profiles si aad u codsato markiiba, ilaa 49."

Ka gudubka xadka raadinta LinkedIn adiga oo ku ciyaaraya API

Waxa aan wali ka shaqaynayaa wax-is-daba-marintan, waxaana qorshaynayaa in aan dadweynaha u soo bandhigo. Qor haddii aad xiisaynayso.

Source: www.habr.com

Add a comment