Ganhurira
Pane kudzikisira kwakadaro paLinkedIn -
Izvo zvakakosha zvemuganho ndezvekuti kana iwe ukashandisa kutsvaga kwevasiri vaunosangana navo kakawanda (hapana chaiwo metrics, iyo algorithm inosarudza zvichibva pane zvaunoita - kangani uye zvakadii watsvaga, wakawedzera vanhu), ipapo mhedzisiro yekutsvaga. ichaganhurwa kumaprofiles matatu, pachinzvimbo che1000 ( default 100 mapeji, 10 profiles papeji). Muganhu unoiswa patsva pakutanga kwemwedzi wega wega. Sezvingatarisirwa,
Asi nguva pfupi yapfuura, yepurojekiti yemhuka, ndakatanga kutamba zvakanyanya neLinkedIn yekutsvaga uye ndakangoerekana ndawana muganhu uyu. Nomuzvarirwo, ini handina kufarira izvi zvakanyanya, nekuti ini handina kuishandisa kune chero chinangwa chekutengesa, saka pfungwa yangu yekutanga yaive yekudzidza iyo inogumira uye kuyedza kuitenderedza.
[Tsanangudzo yakakosha: zvinyorwa zviri muchinyorwa zvinoratidzwa chete nekuda kweruzivo uye zvekudzidzisa zvinangwa. Munyori haakurudzire kushandiswa kwavo kwezvinangwa zvekutengesa.]
Tiri kudzidza dambudziko
Tine: pachinzvimbo chegumi maprofayiri ane pagination, iyo yekutsvaga inodzoka matatu chete, mushure mezvo bhuroka rine "kurudziro" yeprimiyamu account inoiswa uye pazasi ine blurry uye isingabatike profiles.
Pakarepo, ruoko runosvika kune mugadziri wekoni kuti atarise aya akavanzika maprofile - pamwe tinogona kubvisa mamwe masitayipi ekufinyama, kana kubvisa ruzivo kubva mubhuroka mune markup. Asi, zvinonyatsotarisirwa, aya maprofile angori
Zvakanaka, ikozvino ngatitarisei kune Network tab uye titarise kana imwe mhinduro yekutsvaga inodzosera maprofile matatu chete inoshanda. Isu tinowana chikumbiro chatinofarira che "/api/search/blended" uye tarisa mhinduro.
Maprofiles anouya mune `akasanganisirwa` array, asi atove nemasangano mairi 15. Muchiitiko ichi, matatu ekutanga acho zvinhu zvine rumwe ruzivo, chinhu chimwe nechimwe chine ruzivo pane chaiyo profil (semuenzaniso, kana iyo profil iri premium. )
Iwo gumi nemaviri anotevera maprofiles chaiwo - mitsva yekutsvaga, iyo mitatu chete icharatidzwa kwatiri. Sezvo iwe unogona kutofungidzira, inoratidza chete avo vanogamuchira rumwe ruzivo (zvinhu zvitatu zvekutanga). Semuenzaniso, kana iwe ukatora mhinduro kubva kuprofile pasina muganho, iwe unogashira 12 masangano - gumi zvinhu nekuwedzera. ruzivo uye 28 profiles.
Pindura chimiro pasina muganhu
Nei anopfuura gumi profiles achisvika, kunyangwe gumi chaiwo akakumbirwa, uye ivo vasingatore chikamu mukuratidzira nenzira ipi neipi, kunyangwe pane rinotevera peji havazove - ini handisati ndaziva. Kana iwe ukaongorora iyo URL yekukumbira, unogona kuona iyo count=10 (mangani maprofile ekudzoka mumhinduro, anodarika makumi mana nemapfumbamwe).
Ndingafara kugamuchira chero mhinduro panhau iyi.
Ngatiedzei
Zvakanaka, chinhu chinonyanya kukosha chatinoziva chokwadi ndechekuti kune mamwe maprofile mumhinduro pane yavanotiratidza. Izvi zvinoreva kuti tinogona kuwana data rakawanda, kunyangwe muganhu. Ngatiedzei kudhonza iyo API isu pachedu, zvakananga kubva kune iyo console, tichishandisa kutora.
Sezvinotarisirwa, tinowana kukanganisa, 403. Izvi zvinokonzerwa nekuchengeteka, pano isu hatisi kutumira chiratidzo cheCSRF (
Inogona kukopwa kubva kune chero chimwe chikumbiro chakabudirira kana kubva kukiki, kwainochengetwa mundima ye 'JSESSIONID'.
Kwaungawane chiratidzoMusoro wechimwe chikumbiro:
Kana kubva kukiki, zvakananga kuburikidza nekoni:
Ngatiedzei zvakare, panguva ino tinopfuudza marongero ekutora, umo tinotsanangura yedu csrf-chiratidzo separameter mumusoro.
Kubudirira, tinogashira ese gumi profiles. :tada:
Nekuda kwekusiyana kwemisoro, chimiro chemhinduro chakati siyanei nezvakagamuchirwa muchikumbiro chekutanga. Unogona kuwana chimiro chimwe chete kana ukawedzera 'Gamuchira:'application/vnd.linkedin.normalized+json+2.1' kune chinhu chedu, padivi pe csrf tokeni.
Muenzaniso mhinduro ine musoro wakawedzerwa
Zvimwe nezve Bvuma musoro
Chii chinotevera?
Ipapo iwe unogona kugadzirisa (nemaoko kana automate) iyo `kutanga` parameter, inongedza kune index, kubva patichapihwa gumi profiles (default = 10) kubva pane yese yekutsvaga mhinduro. Mune mamwe mazwi, nekuiwedzera negumi mushure mekukumbira kwega kwega, tinowana yakajairika peji-ne-peji kuburitsa, gumi profiles panguva.
Panguva ino ndaive nedata yakakwana uye rusununguko rwekuenderera mberi nekushanda pachirongwa chepet. Asi chingadai chiri chivi kusaedza kuratidza iyi data ipapo ipapo, sezvo yaive yatovepo. Hatisi kuzopinda muEmber, iyo inoshandiswa kumberi. jQuery yaive yakabatana nesaiti, uye wachera kunze ruzivo rwekutanga syntax mundangariro, unogona kugadzira zvinotevera mumaminetsi akati wandei.
jQuery kodhi
/* ΡΠ΅Π½Π΄Π΅Ρ Π±Π»ΠΎΠΊΠ°, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΈ Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π±Π»ΠΎΠΊ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ */
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="/sn/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="/sn/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;
Kana iwe ukaita izvi zvakananga mukoni pane peji rekutsvaga, iyo inowedzera bhatani rinotakura gumi maprofiles nekudzvanya kwega kwega uye rinoapa mune rondedzero. Ehe, shandura chiratidzo uye URL kune inodiwa usati waita izvi. Iyo profil block ichave ine zita, chinzvimbo, nzvimbo, chinongedzo kune iyo mbiri uye mufananidzo wenzvimbo.
mhedziso
Nokudaro, nenhamburiko shomanene, takakwanisa kuwana nzvimbo isina kusimba ndokuwanazve kutsvaka kwedu pasina ganhuriro. Zvakanga zvakakwana kuongorora iyo data uye nzira yayo, tarisa muchikumbiro pachako.
Ini handigone kutaura kuti iri idambudziko rakakura reLinkedIn, nekuti harisi kutyisidzira. Iyo yakawanda yakarasika purofiti nekuda kwe "workaround" dzakadaro, izvo zvinokutendera kuti urege kubhadhara premium. Zvichida mhinduro yakadai sevhavha yakakosha pakushanda kwakarurama kwezvimwe zvikamu zvesaiti, kana kuti inongova usimbe hwevagadziri uye kushayikwa kwezvinhu zvisingabvumiri kuti zviitwe zvakanaka. (Muganho wakaonekwa muna Ndira 2015; izvi zvisati zvaitika pakanga pasina muganhu).
PS
Nomuzvarirwo, iyo jQuery kodhi muenzaniso wekare wekugona. Parizvino ndagadzira browser yekuwedzera kuti ikwane zvandinoda. Iyo inowedzera mabhatani ekudzora uye inopa yakazara maprofile nemifananidzo, bhatani rekukoka uye zvakabatana zvinongedzo. Uyezve, inounganidza zvine simba mafirita enzvimbo, makambani, uye zvimwe zvinhu, uye inotora chiratidzo kubva kukiki. Saka hapana chikonzero che hardcode chero chinhu zvakare. Zvakanaka, inowedzera mamwe masisitimu ekuwedzera, iyo "mangani maprofiles ekukumbira panguva, kusvika makumi mana nemapfumbamwe."
Ndichiri kushanda pakuwedzera uku uye ndinoronga kuiburitsa kune veruzhinji. Nyora kana uchifarira.
Source: www.habr.com