Ketare iyakar binciken LinkedIn ta yin wasa da API

Iyaka

Akwai irin wannan iyakance akan LinkedIn - Iyakar amfani da kasuwanci. Da alama ku, kamar ni har kwanan nan, ba ku taɓa saduwa ko jin labarinsa ba.

Ketare iyakar binciken LinkedIn ta yin wasa da API

Ma'anar iyakar ita ce idan kun yi amfani da binciken mutane a waje da abokan hulɗarku akai-akai (babu ainihin ma'auni, algorithm yana yanke hukunci dangane da ayyukanku - sau nawa da nawa kuka bincika, ƙarin mutane), to sakamakon binciken. za a iyakance ga bayanan martaba uku, maimakon 1000 (tsofaffin shafuka 100, bayanan martaba 10 a kowane shafi). Ana sake saita iyaka a farkon kowane wata. Hakika, manyan asusun ajiya ba su da wannan iyakancewa.

Amma ba da dadewa ba, don aikin dabba, na fara wasa da yawa tare da bincike na LinkedIn kuma ba zato ba tsammani na sami wannan iyakance. A zahiri, ba na son wannan sosai, saboda ban yi amfani da shi don kowane dalilai na kasuwanci ba, don haka tunanina na farko shi ne in yi nazarin iyakance kuma in yi ƙoƙari in kewaya shi.

[Wani muhimmin bayani: an gabatar da kayan da ke cikin labarin don dalilai na bayanai da ilimi kawai. Marubucin baya ƙarfafa amfani da su don dalilai na kasuwanci.]

Muna nazarin matsalar

Muna da: maimakon bayanan martaba goma tare da pagination, binciken ya dawo guda uku kawai, bayan haka an shigar da toshe tare da "shawarwari" na asusun ƙima kuma a ƙasa akwai bayanan martaba da ba za a iya dannawa ba.

Nan da nan, hannu ya kai ga na'ura mai haɓakawa don duba waɗannan ɓoyayyun bayanan martaba - ƙila za mu iya cire wasu salo masu ɓarna, ko fitar da bayanai daga toshe a cikin alamar. Amma, ana tsammanin, waɗannan bayanan martaba ne kawai hotuna masu riƙe wuri kuma ba a adana bayanai.

Ketare iyakar binciken LinkedIn ta yin wasa da API

To, yanzu bari mu duba shafin Network mu duba idan madadin sakamakon binciken da ke dawo da bayanan martaba uku kawai yana aiki. Mun sami buƙatar da muke sha'awar "/api/search/blended" kuma mu dubi amsa.

Ketare iyakar binciken LinkedIn ta yin wasa da API

Bayanan martaba suna zuwa a cikin tsararrun 'hade', amma akwai mahaɗan guda 15 a ciki. A wannan yanayin, ukun farko daga cikinsu abubuwa ne masu ƙarin bayani, kowane abu yana ɗauke da bayanai akan takamaiman bayanin martaba (misali, ko bayanin martabar premium ne. ).

Ketare iyakar binciken LinkedIn ta yin wasa da API

12 na gaba sune ainihin bayanan martaba - sakamakon bincike, wanda uku ne kawai za a nuna mana. Kamar yadda zaku iya tsammani, yana nuna kawai waɗanda suka karɓi ƙarin bayani (abubuwa uku na farko). Alal misali, idan ka ɗauki amsar daga bayanin martaba ba tare da iyaka ba, za ka sami ƙungiyoyi 28 - abubuwa 10 tare da ƙarin. bayanai da kuma 18 profiles.

Amsa don bayanin martaba ba tare da iyaka baKetare iyakar binciken LinkedIn ta yin wasa da API
Ketare iyakar binciken LinkedIn ta yin wasa da API

Me yasa sama da bayanan martaba 10 suka isa, kodayake ana buƙatar 10 daidai, kuma ba sa shiga cikin nunin ta kowace hanya, ko da a shafi na gaba ba za su kasance ba - Ban sani ba tukuna. Idan kayi nazarin URL ɗin buƙatar, zaku iya ganin adadin = 10 (bayanin bayanan martaba nawa ne don dawowa cikin martani, matsakaicin 49).

Ketare iyakar binciken LinkedIn ta yin wasa da API

Zan yi farin cikin samun kowane sharhi game da wannan batu.

Mu gwada

To, mafi mahimmancin abin da muka sani yanzu tabbas shine cewa akwai ƙarin bayanan martaba a cikin martani fiye da yadda suke nuna mana. Wannan yana nufin za mu iya samun ƙarin bayanai, duk da iyaka. Bari mu yi ƙoƙarin cire API ɗin da kanmu, kai tsaye daga na'ura wasan bidiyo, ta amfani da fetch.

Ketare iyakar binciken LinkedIn ta yin wasa da API

Kamar yadda aka zata, mun sami kuskure, 403. Wannan shi ne saboda tsaro, a nan ba mu aika da alamar CSRF ba (CSRF akan Wikipedia. A taƙaice, ana ƙara alama ta musamman ga kowane buƙatun, wanda aka duba akan sabar don sahihancinsa).

Ketare iyakar binciken LinkedIn ta yin wasa da API

Ana iya kwafi daga kowace buƙatun nasara ko daga kukis, inda aka adana shi a cikin filin 'JSESSIONID'.

Inda zan sami alamarShugaban wani buƙatun:

Ketare iyakar binciken LinkedIn ta yin wasa da API

Ko daga kukis, kai tsaye ta hanyar na'ura mai kwakwalwa:

Ketare iyakar binciken LinkedIn ta yin wasa da API

Bari mu sake gwadawa, wannan lokacin mun wuce saitunan don debo, wanda a ciki muke saka csrf-token mu a matsayin ma'auni a cikin taken.

Ketare iyakar binciken LinkedIn ta yin wasa da API

Nasara, muna karɓar duk bayanan martaba 10. :tada:

Saboda bambancin rubutun kai, tsarin amsa ya ɗan bambanta da abin da aka karɓa a cikin buƙatun asali. Kuna iya samun tsari iri ɗaya idan kun ƙara 'Karɓa:' aikace-aikacen/vnd.linkedin.normalized+json+2.1' zuwa ga abin namu, kusa da alamar csrf.
Amsa misali tare da ƙara takenKetare iyakar binciken LinkedIn ta yin wasa da API

Ƙarin bayani game da taken Accept

Abin da ke gaba?

Sannan zaku iya gyara (da hannu ko ta atomatik) ma'aunin `start`, yana nuna ma'anar, daga inda za a ba mu bayanan martaba guda 10 (default = 0) daga dukkan sakamakon binciken. A wasu kalmomi, ta hanyar haɓaka shi da 10 bayan kowace buƙata, muna samun fitowar shafi-by-shafi da aka saba, bayanan martaba 10 a lokaci guda.

A wannan mataki na sami isasshen bayanai da 'yanci don ci gaba da aiki akan aikin dabbobi. Amma da zai zama laifi idan ba a yi ƙoƙarin nuna wannan bayanai nan take ba, tunda ya riga ya kasance a hannu. Ba za mu shiga cikin Ember ba, wanda ake amfani da shi a gaba. jQuery an haɗa shi da rukunin yanar gizon, kuma tun da ka tono ilimin asali na asali a cikin ƙwaƙwalwar ajiya, zaku iya ƙirƙirar waɗannan a cikin mintuna kaɗan.

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="/ha/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="/ha/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;

Idan kayi wannan kai tsaye a cikin na'ura wasan bidiyo akan shafin nema, zai ƙara maɓalli wanda ke loda sabbin bayanan martaba guda 10 tare da kowane danna kuma sanya su cikin jeri. Tabbas, canza alamar da URL zuwa wanda ake buƙata kafin yin wannan. Toshe bayanin martaba zai ƙunshi suna, matsayi, wuri, hanyar haɗi zuwa bayanin martaba da hoton mai riƙewa.

Ketare iyakar binciken LinkedIn ta yin wasa da API

ƙarshe

Don haka, tare da ƙaramin ƙoƙari, mun sami damar gano wurin da ba shi da ƙarfi kuma mu dawo da bincikenmu ba tare da hani ba. Ya isa ya bincika bayanan da hanyarsa, duba cikin buƙatar da kanta.

Ba zan iya cewa wannan babbar matsala ce ga LinkedIn ba, saboda ba ta haifar da wata barazana ba. Matsakaicin asarar riba ya ɓace saboda irin wannan "masu aiki", wanda ke ba ku damar kauce wa biyan kuɗi. Wataƙila irin wannan amsawar uwar garken ya zama dole don daidaitaccen aiki na sauran sassan rukunin yanar gizon, ko kuma kawai kasala ne na masu haɓakawa da rashin wadatar kayan aiki waɗanda ba su bari a yi shi da kyau. (Ƙa'idar ta bayyana a cikin Janairu 2015; kafin wannan babu iyaka).

PS

A zahiri, lambar jQuery babban misali ne na iyakoki. A halin yanzu na ƙirƙiri kari na burauza don dacewa da buƙatu na. Yana ƙara maɓallin sarrafawa kuma yana ba da cikakkun bayanan martaba tare da hotuna, maɓallin gayyata da haɗin kai gabaɗaya. Bugu da kari, yana tattara abubuwan tacewa ga wurare, kamfanoni, da sauran abubuwa, kuma yana maido da alama daga kukis. Don haka babu buƙatar yin hardcode wani abu kuma. Da kyau, yana ƙara ƙarin filayen saiti, da "yawan bayanan martaba nawa don nema a lokaci guda, har zuwa 49."

Ketare iyakar binciken LinkedIn ta yin wasa da API

Har yanzu ina aiki kan wannan kari kuma ina shirin sakin shi ga jama'a. Rubuta idan kuna sha'awar.

source: www.habr.com

Add a comment