Ho feta moeli oa ho batla oa LinkedIn ka ho bapala ka API

Lekanyetsa

Ho na le moeli o joalo ho LinkedIn - Moeli oa tšebeliso ea khoebo. Ho na le monyetla o moholo oa hore uena, joalo ka nna ho fihlela morao tjena, ha u so ka u kopana kapa ho utloa ka eona.

Ho feta moeli oa ho batla oa LinkedIn ka ho bapala ka API

Moelelo oa moeli ke hore haeba u sebelisa patlo ea batho ba kantle ho mabitso a hau khafetsa (ha ho na metrics e nepahetseng, algorithm e etsa qeto e ipapisitse le liketso tsa hau - hore na u batlile hangata hakae le hore na u batlile hakae, ho eketsa batho), ebe sephetho sa lipatlisiso. e tla lekanyetsoa ho li-profaele tse tharo, sebakeng sa 1000 (maqephe a 100 a kamehla, lintlha tse 10 ka leqephe). Moeli o behoa bocha qalong ea khoeli e 'ngoe le e 'ngoe. Ka tlhaho, li-account tsa premium ha li na moeli ona.

Empa haufinyane tjena, bakeng sa morero oa phoofolo ea lapeng, ke ile ka qala ho bapala haholo ka LinkedIn search mme ka tšohanyetso ka fumana moeli ona. Ka tlhaho, ha kea ka ka rata sena haholo, hobane ha kea ka ka se sebelisa bakeng sa merero leha e le efe ea khoebo, kahoo mohopolo oa ka oa pele e ne e le ho ithuta moeli le ho leka ho pota-pota.

[Tlhaloso ea bohlokoa: lisebelisoa tse sehloohong sena li hlahisoa feela bakeng sa merero ea tlhahisoleseding le ea thuto. Sengoli ha se khothaletse tšebeliso ea tsona molemong oa khoebo.]

Re ithuta bothata

Re na le: sebakeng sa li-profiles tse leshome tse nang le pagination, patlisiso e khutlisa tse tharo feela, ka mor'a moo block e nang le "khothaletso" ea ak'haonte ea premium e kentsoeng mme ka tlase ho na le li-profiles tse lerootho le tse sa totobaleheng.

Hang-hang, letsoho le otlolla ho developer console ho sheba li-profiles tsena tse patiloeng - mohlomong re ka tlosa mekhoa e meng e lerootho, kapa ra ntša tlhahisoleseling ho tsoa ho "block" markup. Empa, ho lebelletsoe, liprofaele tsena li nepahetse litšoantšo tsa sets'oants'o 'me ha ho tlhahisoleseding e bolokiloeng.

Ho feta moeli oa ho batla oa LinkedIn ka ho bapala ka API

Ho lokile, joale ha re shebeng "Network" tab 'me re hlahlobe hore na liphetho tse ling tse khutlisang liprofaele tse tharo feela lia sebetsa. Re fumana kopo eo re e ratang ea "/api/search/blended" mme re shebe karabo.

Ho feta moeli oa ho batla oa LinkedIn ka ho bapala ka API

Li-profiles li tla ka "ho kenyelelitsoe", empa ho se ho ntse ho e-na le lihlopha tse 15. Tabeng ena, tse tharo tsa pele ke lintho tse nang le boitsebiso bo eketsehileng, ntho e 'ngoe le e' ngoe e na le boitsebiso bo mabapi le profil e itseng (mohlala, hore na profil ke premium). ).

Ho feta moeli oa ho batla oa LinkedIn ka ho bapala ka API

Tse 12 tse latelang ke litaba tsa 'nete - liphetho tsa lipatlisiso, tseo re tla li bonts'oa tse tharo feela. Joalokaha u se u ntse u ka hakanya, e bontša feela ba fumanang boitsebiso bo eketsehileng (lintho tse tharo tsa pele). Mohlala, haeba u nka karabo ho tsoa profilaneng ntle le moeli, u tla amohela mekhatlo e 28 - lintho tse 10 tse nang le tlatsetso. tlhahisoleseding le 18 profiles.

Araba bakeng sa profil ntle le moeliHo feta moeli oa ho batla oa LinkedIn ka ho bapala ka API
Ho feta moeli oa ho batla oa LinkedIn ka ho bapala ka API

Hobaneng ha li-profiles tse fetang 10 li fihla, leha li kopuoa tse 10, 'me ha li nke karolo ponts'ong ka tsela efe kapa efe, leha e le leqepheng le latelang li ke ke tsa ba teng - ha ke tsebe. Haeba u sekaseka URL ea kopo, u ka bona palo=10 (ho khutlisa liprofaele tse kae karabong, boholo ba 49).

Ho feta moeli oa ho batla oa LinkedIn ka ho bapala ka API

Nka thabela ho amohela maikutlo leha e le afe tabeng ena.

Ha re lekeng

Ho lokile, ntho ea bohlokoa ka ho fetisisa eo re e tsebang hona joale ke hore ho na le litlaleho tse ngata karabong ho feta kamoo li re bontšang kateng. Sena se bolela hore re ka fumana lintlha tse ngata, ho sa tsotellehe moeli. Ha re leke ho hula API ka borona, ka kotloloho ho tsoa ho console, re sebelisa fetch.

Ho feta moeli oa ho batla oa LinkedIn ka ho bapala ka API

Joalokaha ho lebeletsoe, re fumana phoso, 403. Sena se bakoa ke tšireletso, mona ha re romele letšoao la CSRF (CSRF ho Wikipedia. Ka bokhutšoanyane, letšoao le ikhethang le eketsoa ho kopo e 'ngoe le e' ngoe, e hlahlojoang ho seva bakeng sa bonnete).

Ho feta moeli oa ho batla oa LinkedIn ka ho bapala ka API

E ka kopitsoa ho tsoa kopo efe kapa efe e atlehileng kapa ho tsoa ho li-cookie, moo e bolokiloeng lebaleng la 'JSESSIONID'.

Moo u ka fumanang letšoaoSehlooho sa kopo e 'ngoe:

Ho feta moeli oa ho batla oa LinkedIn ka ho bapala ka API

Kapa ho tsoa ho li-cookie, ka kotloloho ka console:

Ho feta moeli oa ho batla oa LinkedIn ka ho bapala ka API

Ha re leke hape, lekhetlong lena re fetisa litlhophiso tsa ho lata, moo re hlalosang csrf-token ea rona e le paramethara hloohong.

Ho feta moeli oa ho batla oa LinkedIn ka ho bapala ka API

Katleho, re fumana lintlha tsohle tse 10. :tada:

Ka lebaka la phapang ea lihlooho, sebopeho sa karabo se fapane hanyane le se amoheloang kopong ea pele. U ka fumana sebopeho se tšoanang haeba u eketsa 'Accept:'application/vnd.linkedin.normalized+json+2.1' ho ntho ea rona, haufi le letšoao la csrf.
Mohlala oa karabo e nang le sehlooho se ekelitsoengHo feta moeli oa ho batla oa LinkedIn ka ho bapala ka API

Tse ling mabapi le sehlooho sa Amohela

Ke'ng e latelang?

Ebe u ka hlophisa (ka letsoho kapa ua iketsetsa) paramethara ea `start`, u supa index, ho qala moo re tla fuoa lintlha tse 10 (default = 0) ho tsoa sephethong sohle sa lipatlisiso. Ka mantsoe a mang, ka ho e eketsa ka 10 ka mor'a kopo e 'ngoe le e' ngoe, re fumana tlhahiso e tloaelehileng ea leqephe ka leqephe, litlaleho tse 10 ka nako.

Nakong ena ke ne ke e-na le boitsebiso bo lekaneng le bolokolohi ba ho tsoela pele ho sebetsa morerong oa liphoofolo tse ruuoang lapeng. Empa e ka be e bile sebe ho se leke ho hlahisa data ena hang-hang, kaha e ne e se e le teng. Re ke ke ra kena ho Ember, e sebelisoang ka pele. jQuery e ne e hokahane le sebaka sa marang-rang, 'me ka mor'a ho cheka tsebo ea syntax ea mantlha mohopolong, u ka etsa tse latelang ka metsotso e seng mekae.

jQuery khoutu

/* рендер блока, принимаем данные профиля и вставляем блок в список профилей используя эти данные */
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="/st/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="/st/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;

Haeba u etsa sena ka kotloloho ho khomphutha leqepheng la ho batla, e tla eketsa konopo e kenyang lifaele tse ncha tse 10 ka ho tobetsa e 'ngoe le e' ngoe ebe e li fana ka lethathamong. Ehlile, fetola letšoao le URL ho e hlokahalang pele o etsa sena. Sebaka sa profil se tla ba le lebitso, boemo, sebaka, sehokelo sa profil le setšoantšo sa sets'oants'o.

Ho feta moeli oa ho batla oa LinkedIn ka ho bapala ka API

fihlela qeto e

Kahoo, ka boiteko bo fokolang, re ile ra khona ho fumana moo ho fokolang teng ’me ra boela ra batla ntle le lithibelo. Ho ne ho lekane ho sekaseka data le tsela ea eona, sheba kopo ka boeona.

Ha ke khone ho bolela hore sena ke bothata bo tebileng ba LinkedIn, hobane ha bo hlahise kotsi leha e le efe. Boholo bo lahleheloa ke phaello ka lebaka la "li-workaround" tse joalo, tse u lumellang ho qoba ho lefa bakeng sa premium. Mohlomong karabelo e joalo ea seva e hlokahala bakeng sa ts'ebetso e nepahetseng ea likarolo tse ling tsa sebaka sa marang-rang, kapa ke botsoa feela ba bahlahisi le khaello ea lisebelisoa tse sa lumelleng hore e etsoe hantle. (Moeli o hlahile ka January 2015; pele ho sena ho ne ho se na moeli).

PES

Ka tlhaho, khoutu ea jQuery ke mohlala oa khale oa bokhoni. Hajoale ke thehile sehokelo sa sebatli se lumellanang le litlhoko tsa ka. E eketsa likonopo tsa taolo 'me e fana ka lifaele tse felletseng ka litšoantšo, konopo ea memo le likhokahano tse akaretsang. Ho feta moo, e bokella li-filters bakeng sa libaka, lik'hamphani le lintho tse ling, 'me e fumana lets'oao ho li-cookie. Kahoo ha ho na tlhoko ea ho hardcode eng kapa eng hape. E eketsa likarolo tse ling tsa litlhophiso, e leng "ho kopa liprofaele tse kae ka nako, ho fihla ho 49."

Ho feta moeli oa ho batla oa LinkedIn ka ho bapala ka API

Ke ntse ke sebetsana le tlatsetso ena mme ke rera ho e lokollela sechaba. Ngola haeba u thahasella.

Source: www.habr.com

Eketsa ka tlhaloso