A’ seachnadh crìoch rannsachaidh LinkedIn le bhith a’ cluich leis an API

Cuingealachadh

Tha a leithid de chuingealachadh air LinkedIn - Crìochan cleachdadh malairteach. Tha e glè choltach nach do thachair thusa, mar mise gu o chionn ghoirid, a-riamh no nach cuala tu mu dheidhinn.

A’ seachnadh crìoch rannsachaidh LinkedIn le bhith a’ cluich leis an API

Is e brìgh na crìche ma chleachdas tu an rannsachadh airson daoine taobh a-muigh do luchd-aithne ro thric (chan eil meatrach ceart ann, bidh an algairim a’ co-dhùnadh stèidhichte air na rinn thu - dè cho tric agus dè an ìre a rannsaich thu, daoine a chuir ris), an uairsin toradh an sgrùdaidh bidh e cuingealaichte ri trì pròifilean, an àite 1000 (duilleagan 100 bunaiteach, 10 pròifilean gach duilleag). Tha a’ chrìoch air ath-shuidheachadh aig toiseach gach mìos. Gu nàdarra, chan eil a’ chuingealachadh seo aig prìomh chunntasan.

Ach chan eil fada air ais, airson pròiseact peata, thòisich mi a 'cluich gu mòr le rannsachadh LinkedIn agus gu h-obann fhuair mi an cuingealachadh seo. Gu nàdarra, cha do chòrd seo rium gu mòr, oir cha do chleachd mi e airson adhbharan malairteach sam bith, agus mar sin b’ e a’ chiad bheachd a bh’ agam sgrùdadh a dhèanamh air a’ chuingealachadh agus feuchainn ri faighinn timcheall air.

[Soillseachadh cudromach: tha na stuthan san artaigil air an taisbeanadh a-mhàin airson adhbharan fiosrachaidh agus foghlaim. Chan eil an t-ùghdar a’ brosnachadh an cleachdadh airson adhbharan malairteach.]

Tha sinn a 'sgrùdadh na trioblaid

Tha againn: an àite deich pròifilean le duilleag-dhuilleag, chan eil an rannsachadh a’ tilleadh ach trì, às deidh sin tha bloc le “moladh” de phrìomh chunntas air a chuir a-steach agus gu h-ìosal tha pròifilean neo-shoilleir agus nach gabh cliogadh.

Sa bhad, bidh an làmh a’ ruighinn a-mach gu consol an leasaiche gus sùil a thoirt air na pròifilean falaichte sin - is dòcha gun urrainn dhuinn cuid de stoidhlichean blurring a thoirt air falbh, no fiosrachadh a thoirt a-mach à bloc sa chomharra. Ach, gu ìre mhòr an dùil, tha na pròifilean sin dìreach dealbhan neach-àite agus chan eil fiosrachadh sam bith air a stòradh.

A’ seachnadh crìoch rannsachaidh LinkedIn le bhith a’ cluich leis an API

Ceart gu leòr, a-nis leig dhuinn sùil a thoirt air taba an Lìonra agus dèan cinnteach a bheil na toraidhean rannsachaidh eile nach till ach trì pròifilean ag obair. Lorg sinn an t-iarrtas anns a bheil ùidh againn airson “/api/search/ blended” agus coimhead air an fhreagairt.

A’ seachnadh crìoch rannsachaidh LinkedIn le bhith a’ cluich leis an API

Bidh pròifilean a’ tighinn ann an sreath ‘included’, ach tha 15 eintiteas ann mu thràth sa chùis seo, tha a’ chiad trì dhiubh nan nithean le fiosrachadh a bharrachd, tha fiosrachadh anns gach nì air pròifil sònraichte (mar eisimpleir, co-dhiù a tha am pròifil na phrìomhachas. ).

A’ seachnadh crìoch rannsachaidh LinkedIn le bhith a’ cluich leis an API

Tha an ath 12 fìor phròifil - toraidhean rannsachaidh, agus cha tèid ach trì dhiubh sin a shealltainn dhuinn. Mar a shaoileadh tu mu thràth, chan eil e a 'sealltainn ach an fheadhainn a gheibh fiosrachadh a bharrachd (a' chiad trì rudan). Mar eisimpleir, ma bheir thu am freagairt bho phròifil gun chrìoch, gheibh thu 28 eintiteas - 10 nithean le barrachd. fiosrachadh agus 18 pròifilean.

Freagairt airson pròifil gun chrìochA’ seachnadh crìoch rannsachaidh LinkedIn le bhith a’ cluich leis an API
A’ seachnadh crìoch rannsachaidh LinkedIn le bhith a’ cluich leis an API

Carson a ruigeas barrachd air 10 pròifilean, ged a thathar ag iarraidh dìreach 10, agus chan eil iad a’ gabhail pàirt anns an taisbeanadh ann an dòigh sam bith, eadhon air an ath dhuilleig cha bhith iad - chan eil fhios agam fhathast. Ma nì thu mion-sgrùdadh air URL an iarrtais, chì thu gu bheil cunntadh = 10 (cia mheud pròifil a thilleas san fhreagairt, 49 aig a’ char as àirde).

A’ seachnadh crìoch rannsachaidh LinkedIn le bhith a’ cluich leis an API

Bhithinn toilichte beachdan sam bith fhaighinn air a’ chùis seo.

Feuch an dèan sinn deuchainn

Ceart gu leòr, is e an rud as cudromaiche a tha fios againn a-nis le cinnt gu bheil barrachd phròifil anns an fhreagairt na tha iad a’ sealltainn dhuinn. Tha seo a’ ciallachadh gum faigh sinn barrachd dàta, a dh’aindeoin a’ chrìoch. Feuchaidh sinn ris an API a tharraing sinn fhìn, gu dìreach bhon chonsail, a’ cleachdadh fetch.

A’ seachnadh crìoch rannsachaidh LinkedIn le bhith a’ cluich leis an API

Mar a bhiodh dùil, gheibh sinn mearachd, 403. Tha seo air sgàth tèarainteachd, an seo chan eil sinn a' cur tòcan CSRF (CSRF air Wikipedia. Ann an ùine ghoirid, thèid comharra sònraichte a chur ris gach iarrtas, a thèid a sgrùdadh air an fhrithealaiche airson dearbhteachd).

A’ seachnadh crìoch rannsachaidh LinkedIn le bhith a’ cluich leis an API

Faodar a chopaigeadh bho iarrtas soirbheachail sam bith eile no bho bhriosgaidean, far a bheil e air a stòradh san raon ‘JSESSIONID’.

Far an lorgar an tòcanCeann-cinn iarrtas eile:

A’ seachnadh crìoch rannsachaidh LinkedIn le bhith a’ cluich leis an API

No bho bhriosgaidean, gu dìreach tron ​​​​chonsól:

A’ seachnadh crìoch rannsachaidh LinkedIn le bhith a’ cluich leis an API

Feuchaidh sinn a-rithist, an turas seo bheir sinn seachad na roghainnean airson faighinn, anns am bi sinn a’ sònrachadh an tòcan csrf againn mar pharamadair anns a’ cheann-cinn.

A’ seachnadh crìoch rannsachaidh LinkedIn le bhith a’ cluich leis an API

Soirbheachas, gheibh sinn a h-uile 10 pròifilean. :tada:

Mar thoradh air an eadar-dhealachadh ann an cinn-cinn, tha structar an fhreagairt beagan eadar-dhealaichte bho na gheibhear san iarrtas thùsail. Gheibh thu an aon structar ma chuireas tu 'Gabhail:'application/vnd.linkedin.normalized+json+2.1' ris an nì againn, ri taobh an tòcan csrf.
Eisimpleir de fhreagairt le bann-cinn a bharrachdA’ seachnadh crìoch rannsachaidh LinkedIn le bhith a’ cluich leis an API

Tuilleadh mun cheann-cinnidh Accept

Dè a-nis?

An uairsin faodaidh tu am paramadair `tòiseachadh` a dheasachadh (le làimh no fèin-ghluasad), a’ comharrachadh a’ chlàr-amais, a’ tòiseachadh às an tèid 10 pròifilean a thoirt dhuinn (bunaiteach = 0) bhon toradh rannsachaidh gu lèir. Ann am faclan eile, le bhith ga àrdachadh le 10 às deidh gach iarrtas, gheibh sinn an toradh àbhaisteach duilleag-air-duilleag, 10 pròifilean aig an aon àm.

Aig an ìre seo bha dàta gu leòr agam agus saorsa airson leantainn air adhart ag obair air a’ phròiseact peata. Ach bhiodh e air a bhith na pheacadh gun a bhith a’ feuchainn ris an dàta seo a thaisbeanadh sa bhad, leis gu robh e mar-thà ri làimh. Cha tèid sinn a-steach gu Ember, a tha air a chleachdadh aig an aghaidh. Bha jQuery ceangailte ris an làrach, agus às deidh dhut eòlas air co-chòrdadh bunaiteach a chladhach nad chuimhne, faodaidh tu na leanas a chruthachadh ann am mionaid no dhà.

Còd 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="/gd/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="/gd/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;

Ma nì thu seo gu dìreach anns a’ chonsail air an duilleag sgrùdaidh, cuiridh e putan ris a luchdaicheas 10 pròifilean ùra le gach cliog agus a bheir iad ann an liosta. Gu dearbh, atharraich an tòcan agus an URL chun fhear a tha a dhìth mus dèan thu seo. Anns a’ bhloc pròifil bidh ainm, suidheachadh, àite, ceangal ris a’ phròifil agus ìomhaigh neach-àite.

A’ seachnadh crìoch rannsachaidh LinkedIn le bhith a’ cluich leis an API

co-dhùnadh

Mar sin, le beagan oidhirp, bha e comasach dhuinn an t-àite lag a lorg agus ar rannsachadh fhaighinn air ais gun chuingealachaidhean. Bha e gu leòr airson an dàta agus an t-slighe aige a sgrùdadh, coimhead a-steach don iarrtas fhèin.

Chan urrainn dhomh a ràdh gur e fìor dhuilgheadas a tha seo dha LinkedIn, leis nach eil e na chunnart sam bith. Tha a 'char as àirde a' call prothaid mar thoradh air a leithid "workarounds", a leigeas leat a sheachnadh pàigheadh ​​​​airson premium. Is dòcha gu bheil feum air a leithid de fhreagairt bhon fhrithealaiche airson obrachadh ceart pàirtean eile den làrach, no is e dìreach leisg an luchd-leasachaidh agus dìth ghoireasan nach leig leis a bhith air a dhèanamh gu math. (Nochd an cuingealachadh san Fhaoilleach 2015; roimhe seo cha robh crìoch ann).

PS

Gu nàdarra, tha an còd jQuery na eisimpleir caran prìomhadail de na comasan. Aig an àm seo tha mi air leudachadh brabhsair a chruthachadh a fhreagras air na feumalachdan agam. Bidh e a’ cur putanan smachd ris agus a’ toirt seachad làn phròifil le dealbhan, putan cuireadh agus ceanglaichean coitcheann. A bharrachd air an sin, bidh e gu dinamach a’ cruinneachadh sìoltachain airson àiteachan, companaidhean, agus rudan eile, agus a’ faighinn comharra bho bhriosgaidean. Mar sin chan eil feum air còd cruaidh tuilleadh. Uill, tha e a’ cur raointean roghainnean a bharrachd ris, a la “cia mheud pròifil a dh’ iarrar aig an aon àm, suas ri 49. ”

A’ seachnadh crìoch rannsachaidh LinkedIn le bhith a’ cluich leis an API

Tha mi fhathast ag obair air a’ chur-ris seo agus tha mi an dùil a leigeil ma sgaoil don phoball. Sgrìobh ma tha ùidh agad.

Source: www.habr.com

Cuir beachd ann