Bi lîstina bi API-ê re sînorê lêgerîna LinkedIn derbas bikin

Sînorkirin

Li ser LinkedIn sînorek wusa heye - Sînorê karanîna bazirganî. Pir îhtîmal e ku we, mîna min heya vê dawiyê, tu carî pê re rûbirû nebûbe an jî jê nebihîstiye.

Bi lîstina bi API-ê re sînorê lêgerîna LinkedIn derbas bikin

Esasê sînor ev e ku heke hûn pir caran lêgerîna mirovên li derveyî têkiliyên xwe bikar bînin (metrîkên rast tune, algorîtma li gorî kiryarên we biryar dide - we çend caran û çend caran hûn lê geriyan, mirov lê zêde kirin), wê hingê encama lêgerînê dê di şûna 1000 de, bi sê profîlan were sînordar kirin (100 rûpelek berê, her rûpelê 10 profîl). Sînor di destpêka her mehê de ji nû ve tê danîn. Xuriste, Hesabên premium ev sînor nîne.

Lê ne demek berê, ji bo projeyek heywanan, min dest pê kir pir bi lêgerîna LinkedIn re lîst û ji nişkê ve ev sînor girt. Bi xwezayî, min ji vê yekê pir hez nekir, ji ber ku min ew ji bo mebestên bazirganî bikar neanî, ji ber vê yekê yekem ramana min ev bû ku ez li ser sînor lêkolîn bikim û hewl bidim ku li dora wê bigerim.

[Zelaliyek girîng: materyalên di gotarê de tenê ji bo armancên agahdarî û perwerdehiyê têne pêşkêş kirin. Nivîskar bikaranîna wan ji bo armancên bazirganî teşwîq nake.]

Em li ser pirsgirêkê lêkolîn dikin

Me heye: Li şûna deh profîlên bi pagasyon, lêgerîn tenê sê vedigere, pişt re bloka bi "pêşniyazek" hesabek premium tê danîn û li jêr profîlên nezelal û ne-klîk hene.

Di cih de, dest xwe digihîne konsolê pêşdebiran da ku li van profîlên veşartî binêre - dibe ku em karibin hin şêwazên şêrîn derxînin, an jî agahdarî ji blokê di nîşankirinê de derxînin. Lê, pir tê hêvîkirin, ev profîl tenê ne wêneyên cîhgiran û tu agahî nayê hilanîn.

Bi lîstina bi API-ê re sînorê lêgerîna LinkedIn derbas bikin

Baş e, naha em li tabloya Torê binihêrin û kontrol bikin ka encamên lêgerîna alternatîf ên ku tenê sê profîl vedigerînin bi rastî kar dikin. Em daxwaza ku em jê re eleqedar in ji bo "/api/search/blended" dibînin û li bersivê dinêrin.

Bi lîstina bi API-ê re sînorê lêgerîna LinkedIn derbas bikin

Profîl di nav rêzek `tevlî` de têne, lê jixwe 15 sazî tê de hene Di vê rewşê de, sê ji wan tiştên ku agahdariya zêde hene, her tişt li ser profîlek taybetî agahdarî dihewîne (mînak, gelo profîl premium e. ).

Bi lîstina bi API-ê re sînorê lêgerîna LinkedIn derbas bikin

12 yên din profîlên rastîn in - encamên lêgerînê, ji wan tenê sê dê ji me re werin xuyang kirin. Wekî ku hûn jixwe dikarin texmîn bikin, ew tenê yên ku agahdariya zêde digirin (sê tiştên pêşîn) nîşan dide. Mînakî, heke hûn bersivê ji profîlek bêsînor bistînin, hûn ê 28 saziyan bistînin - 10 tiştên din. agahî û 18 profiles.

Ji bo profîla bêsînor bersiv bidinBi lîstina bi API-ê re sînorê lêgerîna LinkedIn derbas bikin
Bi lîstina bi API-ê re sînorê lêgerîna LinkedIn derbas bikin

Çima zêdetirî 10 profîlan digihîjin, her çend tam 10 têne xwestin, û ew bi ti awayî beşdarî pêşandanê nabin, tewra di rûpela din de jî ew ê nebin - ez hîn nizanim. Ger hûn URL-ya daxwazê ​​analîz bikin, hûn dikarin wê hejmarê=10 bibînin (di bersivê de çend profîl vegerin, herî zêde 49).

Bi lîstina bi API-ê re sînorê lêgerîna LinkedIn derbas bikin

Ez ê kêfxweş bibim ku li ser vê mijarê şîroveyan bistînim.

Werin em ceribandinê bikin

Baş e, ya herî girîng ku em naha bi guman dizanin ev e ku di bersivê de ji wan bêtir profîl hene ku ew nîşanî me didin. Ev tê vê wateyê ku em dikarin bêtir daneyan bistînin, tevî sînor. Ka em hewl bidin ku API-ê bixwe, rasterast ji konsolê, bi karanîna fetch-ê bikişîne.

Bi lîstina bi API-ê re sînorê lêgerîna LinkedIn derbas bikin

Wekî ku tê hêvî kirin, em xeletiyek distînin, 403. Ev ji ber ewlehiyê ye, li vir em nîşanek CSRF naşînin (CSRF li ser Wîkîpediya. Bi kurtasî, nîşanek bêhempa li her daxwazê ​​tê zêdekirin, ku ji bo rastbûna serverê tê kontrol kirin).

Bi lîstina bi API-ê re sînorê lêgerîna LinkedIn derbas bikin

Ew dikare ji daxwazek din a serketî an ji çerezan were kopî kirin, ku ew li qada 'JSESSIONID' tê hilanîn.

Li ku derê token bibîninSernavê daxwazek din:

Bi lîstina bi API-ê re sînorê lêgerîna LinkedIn derbas bikin

An jî ji çerezan, rasterast bi navgîniya konsolê:

Bi lîstina bi API-ê re sînorê lêgerîna LinkedIn derbas bikin

Ka em dîsa biceribînin, vê carê em mîhengan derbas dikin da ku werin hilgirtin, ku tê de em csrf-tokena xwe wekî pîvanek di serî de destnîşan dikin.

Bi lîstina bi API-ê re sînorê lêgerîna LinkedIn derbas bikin

Serkeftin, em hemî 10 profîlan distînin. :tada:

Ji ber cûdahiya sernivîsan, avahiya bersivê ji ya ku di daxwaznameya orjînal de tê wergirtin hinekî cûda ye. Heke hûn 'Qebûl: 'serlêdan/vnd.linkedin.normalized+json+2.1' li objeya me, li kêleka nîşana csrf zêde bikin, hûn dikarin heman avahî bistînin.
Bersiva nimûne bi sernavê zêdekirîBi lîstina bi API-ê re sînorê lêgerîna LinkedIn derbas bikin

Zêdetir li ser sernivîsa Qebûlkirinê

Çi ye?

Dûv re hûn dikarin pîvana `destpêkê` biguhezînin (bi destan an jî otomatîk), ku nîşanê nîşanê bide, ku jê dest pê dike dê ji tevahiya encama lêgerînê 10 profîl (pêşniyaz = 0) werin dayîn. Bi gotineke din, bi zêdekirina wê 10 piştî her daxwazekê, em hilbera asayî ya rûpel-bi-rûpel, di carekê de 10 profîlan distînin.

Di vê qonaxê de min têra xwe dane û azadiya min hebû ku ez xebata li ser projeya pet bidomînim. Lê dê guneh bûya ku meriv hewl nede ku van daneyan rast di cih de nîşan bide, ji ber ku ew jixwe di dest de bû. Em ê neçin Ember, ku li pêşiyê tê bikar anîn. jQuery bi malperê ve girêdayî bû, û piştî ku zanîna hevoksaziya bingehîn di bîranînê de derxist, hûn dikarin di nav çend hûrdeman de jêrîn biafirînin.

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

Ger hûn vê yekê rasterast di konsolê de li ser rûpela lêgerînê bikin, ew ê bişkokek zêde bike ku bi her klîkekê 10 profîlên nû bar dike û wan di navnîşek de vedihewîne. Bê guman, berî ku hûn vê bikin, token û URL-ê bi ya pêdivî biguhezînin. Bloka profîlê dê nav, pozîsyon, cîh, girêdana bi profîlê û wêneyek cîhgirek vehewîne.

Bi lîstina bi API-ê re sînorê lêgerîna LinkedIn derbas bikin

encamê

Bi vî rengî, bi kêmanî hewildan, me karîbû cîhê qels bibînin û bê sînor lêgerîna xwe ji nû ve bi dest bixin. Têra analîzkirina daneyan û riya wê dikir, li daxwazê ​​bi xwe mêze dikir.

Ez nikarim bibêjim ku ev ji bo LinkedIn pirsgirêkek ciddî ye, ji ber ku ew ti tehdîd nake. Herî zêde ji ber "çareseriyên weha" qezenca winda ye, ku dihêle hûn ji dayîna prîmê dûr bisekinin. Dibe ku bersivek wusa ji serverê ji bo xebata rast a beşên din ên malperê hewce be, an jî ew bi tenê tembeliya pêşdebiran û kêmbûna çavkaniyan e ku nahêle ew baş were kirin. (Qedexe di Çileya 2015'an de derket holê; beriya vê ti sînor tune bû).

PS

Bi xwezayî, koda jQuery mînakek jêhatî ya jêhatî ye. Vê gavê min pêvekek gerokek çêkiriye ku li gorî hewcedariyên min be. Ew bişkokên kontrolê zêde dike û profîlên tam bi wêne, bişkokek vexwendinê û girêdanên gelemperî vedigire. Zêdeyî, ew bi dînamîk fîlteran ji bo cîh, pargîdan û tiştên din berhev dike, û nîşanek ji çerezan vedigire. Ji ber vê yekê êdî ne hewce ye ku tiştek hişk bike. Welê, ew zeviyên mîhengên din lê zêde dike, wekî "çend profîl di carekê de daxwaz bikin, heya 49."

Bi lîstina bi API-ê re sînorê lêgerîna LinkedIn derbas bikin

Ez hîn jî li ser vê zêdekirinê dixebitim û plan dikim ku wê ji raya giştî re ragihînim. Heke hûn eleqedar in binivîsin.

Source: www.habr.com

Add a comment