Kudutsa malire osakira a LinkedIn posewera ndi API

Malire

Pali malire otere pa LinkedIn - Malire ogwiritsira ntchito malonda. Ndizotheka kwambiri kuti inu, monga ine mpaka posachedwa, simunakumanepo kapena kumvapo.

Kudutsa malire osakira a LinkedIn posewera ndi API

Chofunikira pa malire ndikuti ngati mumagwiritsa ntchito kusaka kwa anthu omwe sakulumikizana nawo pafupipafupi (palibe ma metric enieni, algorithm imasankha kutengera zomwe mwachita - kangati komanso kuchuluka komwe mudasaka, anthu owonjezera), ndiye zotsatira zosaka. adzakhala ndi mbiri zitatu zokha, m'malo mwa 1000 (masamba 100 osasintha, mbiri 10 patsamba lililonse). Malire amakhazikitsidwanso kumayambiriro kwa mwezi uliwonse. Mwachibadwa, maakaunti a premium alibe malire awa.

Koma posakhalitsa, pa polojekiti ya ziweto, ndinayamba kusewera kwambiri ndi LinkedIn search ndipo mwadzidzidzi ndinapeza izi. Mwachibadwa, sindinakonde izi kwambiri, chifukwa sindinazigwiritse ntchito pazinthu zamalonda, kotero lingaliro langa loyamba linali kuphunzira zochepetsera ndikuyesera kuzungulira.

[Kufotokozera kofunikira: zida zomwe zili m'nkhaniyi zimangoperekedwa pazambiri komanso maphunziro. Wolembayo samalimbikitsa kugwiritsa ntchito kwawo pazinthu zamalonda.]

Tikuphunzira za vutolo

Tili ndi: m'malo mwa ma profiles khumi okhala ndi pagination, kusaka kumangobwera atatu okha, pambuyo pake chipika chokhala ndi "malingizo" aakaunti ya premium chimayikidwa ndipo pansipa pali mbiri zowoneka bwino komanso zosadina.

Nthawi yomweyo, dzanja limafikira kwa kontrakitala kuti ayang'ane mbiri zobisika izi - mwina titha kuchotsa masitayelo osokonekera, kapena kuchotsa zambiri pa block yomwe ili mumndandanda. Koma, mwachiyembekezo, ma profayilo awa ndi achilungamo zithunzi zapamalo ndipo palibe zambiri zomwe zasungidwa.

Kudutsa malire osakira a LinkedIn posewera ndi API

Chabwino, tsopano tiyeni tiyang'ane pa Network tabu ndikuwona ngati zosaka zina zomwe zimangobweretsa ma profaili atatu okha zikugwira ntchito. Timapeza pempho lomwe tikufuna la "/api/search/blended" ndikuyang'ana yankho.

Kudutsa malire osakira a LinkedIn posewera ndi API

Mbiri imabwera mugulu la ``kuphatikizidwa`, koma pali kale mabungwe 15. Pankhaniyi, atatu oyambawo ndi zinthu zomwe zili ndi chidziwitso chowonjezera, chinthu chilichonse chimakhala ndi chidziwitso chambiri (mwachitsanzo, ngati mbiriyo ndi yamtengo wapatali). ).

Kudutsa malire osakira a LinkedIn posewera ndi API

12 otsatirawa ndi mbiri yeniyeni - zotsatira zakusaka, zomwe zitatu zokha zidzawonetsedwa kwa ife. Monga momwe mungaganizire kale, zimangowonetsa okhawo omwe amalandira zowonjezera (zinthu zitatu zoyambirira). Mwachitsanzo, ngati mutenga yankho kuchokera ku mbiri popanda malire, mudzalandira mabungwe 28 - zinthu 10 ndi zina. zambiri ndi mbiri 18.

Yankhani mbiri popanda malireKudutsa malire osakira a LinkedIn posewera ndi API
Kudutsa malire osakira a LinkedIn posewera ndi API

Chifukwa chiyani ma profiles opitilira 10 amafika, ngakhale 10 ndendende afunsidwa, ndipo satenga nawo gawo pazowonetsera mwanjira iliyonse, ngakhale patsamba lotsatira sadzakhalapo - sindikudziwa. Ngati musanthula ulalo wa pempho, mutha kuwona kuti count=10 (ndi ma profailo angati oti mubwezere poyankha, opitilira 49).

Kudutsa malire osakira a LinkedIn posewera ndi API

Ndingasangalale kulandira ndemanga iliyonse pankhaniyi.

Tiyeni tiyese

Chabwino, chinthu chofunikira kwambiri chomwe tikudziwa tsopano ndikuti pali mbiri zambiri pakuyankha kuposa zomwe amatiwonetsa. Izi zikutanthauza kuti tikhoza kupeza zambiri, ngakhale malire. Tiyeni tiyese kukoka API tokha, mwachindunji kuchokera ku kontrakitala, pogwiritsa ntchito kukopera.

Kudutsa malire osakira a LinkedIn posewera ndi API

Monga tikuyembekezeredwa, timapeza cholakwika, 403. Izi ndi chifukwa cha chitetezo, apa sitikutumiza chizindikiro cha CSRF (CSRF pa Wikipedia. Mwachidule, chizindikiro chapadera chimawonjezedwa ku pempho lililonse, lomwe limafufuzidwa pa seva kuti likhale loona).

Kudutsa malire osakira a LinkedIn posewera ndi API

Itha kukopera kuchokera ku pempho lina lililonse lopambana kapena kuchokera ku makeke, pomwe imasungidwa m'gawo la 'JSESSIONID'.

Komwe mungapeze chizindikiroMutu wa pempho lina:

Kudutsa malire osakira a LinkedIn posewera ndi API

Kapena kuchokera ku makeke, mwachindunji kudzera pa console:

Kudutsa malire osakira a LinkedIn posewera ndi API

Tiyeni tiyesenso, nthawi ino tidutsa zosintha kuti titenge, momwe timafotokozera csrf-token yathu ngati parameter pamutu.

Kudutsa malire osakira a LinkedIn posewera ndi API

Kupambana, timalandira mbiri zonse 10. :tada:

Chifukwa cha kusiyana kwa mitu, mawonekedwe a yankho ndi osiyana pang'ono ndi omwe amalandiridwa mu pempho loyambirira. Mutha kupeza mawonekedwe omwewo ngati muwonjezera 'Landirani: 'application/vnd.linkedin.normalized+json+2.1' ku chinthu chathu, pafupi ndi chizindikiro cha csrf.
Yankho lachitsanzo lowonjezera mutuKudutsa malire osakira a LinkedIn posewera ndi API

Zambiri zamutu wa Accept

Kodi yotsatira?

Kenako mutha kusintha (pamanja kapena automate) gawo la `start`, kuloza ku index, kuyambira pomwe tidzapatsidwa mbiri 10 (zosasintha = 0) kuchokera pazotsatira zonse. Mwa kuyankhula kwina, powonjezera ndi 10 pambuyo pa pempho lililonse, timapeza zotuluka pa tsamba ndi tsamba, mbiri 10 panthawi imodzi.

Panthawiyi ndinali ndi deta yokwanira komanso ufulu woti ndipitirize kugwira ntchito pa polojekiti ya ziweto. Koma likanakhala tchimo kusayesa kusonyeza deta imeneyi pomwepo, popeza inali kale. Sitidzapita ku Ember, yomwe imagwiritsidwa ntchito kutsogolo. jQuery idalumikizidwa ndi tsambalo, ndipo mutapeza chidziwitso cha mawu oyambira mu kukumbukira, mutha kupanga zotsatirazi mumphindi zingapo.

jQuery kodi

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

Mukachita izi mwachindunji patsamba losakira, zidzawonjezera batani lomwe limadzaza mbiri zatsopano 10 ndikudina kulikonse ndikuzilemba pamndandanda. Zachidziwikire, sinthani chizindikiro ndi ulalo kukhala wofunikira musanachite izi. Tsamba la mbiriyo likhala ndi dzina, malo, malo, ulalo wa mbiriyo ndi chithunzi chosungira.

Kudutsa malire osakira a LinkedIn posewera ndi API

Pomaliza

Motero, ndi kuyesayesa pang’ono, tinakhoza kupeza malo ofooka ndi kupezanso kufufuza kwathu popanda zoletsa. Zinali zokwanira kusanthula deta ndi njira yake, kuyang'ana mu pempho lokha.

Sindinganene kuti ili ndi vuto lalikulu kwa LinkedIn, chifukwa silikuwopseza. Kuchuluka kumatayika phindu chifukwa cha "workaround" zotere, zomwe zimakuthandizani kuti musamalipire ndalama zolipirira. Mwina yankho la seva yotere ndilofunika kuti magawo ena a malowa agwire ntchito bwino, kapena ndi ulesi chabe wa omanga ndi kusowa kwazinthu zomwe sizilola kuti zichitike bwino. (Zochepa zidawonekera mu Januwale 2015; izi zisanachitike panalibe malire).

PS

Mwachilengedwe, nambala ya jQuery ndi chitsanzo choyambirira cha kuthekera. Pakadali pano ndapanga chowonjezera chamsakatuli kuti chigwirizane ndi zosowa zanga. Imawonjezera mabatani owongolera ndikuwonetsa mbiri yonse yokhala ndi zithunzi, batani loyitanira ndi kulumikizana wamba. Kuphatikiza apo, imasonkhanitsa zosefera zamalo, makampani, ndi zinthu zina, ndikutenga chizindikiro kuchokera ku makeke. Kotero palibenso chifukwa cha hardcode chirichonse. Chabwino, imawonjezera magawo owonjezera owonjezera, la "ndi mbiri zingati zomwe mungapemphe panthawi, mpaka 49."

Kudutsa malire osakira a LinkedIn posewera ndi API

Ndakali kubelekela antoomwe ambungano eeyi alimwi ndakali kukonzya kubikkila maano kuzintu nzyobayanda. Lembani ngati mukufuna.

Source: www.habr.com

Kuwonjezera ndemanga