Bypassing LinkedIn txoj kev tshawb fawb txwv los ntawm kev ua si nrog API

Txwv

Muaj qhov txwv ntawm LinkedIn - Kev lag luam siv txwv. Nws yog qhov zoo tshaj plaws uas koj, zoo li kuv txog tam sim no, tsis tau ntsib lossis hnov ​​​​txog nws.

Bypassing LinkedIn txoj kev tshawb fawb txwv los ntawm kev ua si nrog API

Lub ntsiab lus ntawm qhov txwv yog tias yog tias koj siv kev tshawb nrhiav rau cov neeg sab nraud koj cov neeg sib cuag ntau dhau (tsis muaj qhov ntsuas qhov tseeb, lub algorithm txiav txim siab raws li koj qhov kev ua - ntau npaum li cas thiab ntau npaum li cas koj tshawb nrhiav, ntxiv cov neeg), ces qhov kev tshawb fawb tshwm sim. yuav raug txwv rau peb qhov profile, tsis yog 1000 (default 100 nplooj ntawv, 10 profiles ib nplooj). Qhov txwv tau rov pib dua thaum pib ntawm txhua lub hlis. Lawm, cov nyiaj hwm hwm tsis muaj qhov txwv no.

Tab sis tsis ntev dhau los, rau ib txoj haujlwm tsiaj, kuv pib ua si ntau nrog LinkedIn nrhiav thiab mam li nco dheev tau txais qhov kev txwv no. Lawm, kuv tsis nyiam qhov no heev, vim kuv tsis tau siv nws rau tej lub hom phiaj coj mus muag, yog li kuv thawj qhov kev xav yog kawm txog qhov txwv thiab sim mus ncig nws.

[Ib qho lus piav qhia tseem ceeb: cov ntaub ntawv hauv kab lus tsuas yog nthuav tawm rau cov ntaub ntawv xov xwm thiab kev kawm. Tus sau tsis txhawb kom lawv siv rau kev lag luam.]

Peb tab tom kawm txog qhov teeb meem

Peb muaj: es tsis txhob ntawm kaum profiles nrog pagination, qhov kev tshawb nrhiav rov qab tsuas yog peb, tom qab uas ib qho thaiv nrog "kev pom zoo" ntawm tus lej hwm tau muab tso rau thiab hauv qab no yog qhov muag plooj thiab tsis tuaj yeem nyem.

Tam sim ntawd, txhais tes ncav mus rau tus tsim tawm console saib cov ntaub ntawv zais no - tej zaum peb tuaj yeem tshem tawm qee qhov tsis pom kev, lossis rho tawm cov ntaub ntawv los ntawm qhov thaiv hauv qhov cim. Tab sis, qhov kev cia siab heev, cov profiles no tsuas yog qhov chaw duab thiab tsis muaj ntaub ntawv khaws tseg.

Bypassing LinkedIn txoj kev tshawb fawb txwv los ntawm kev ua si nrog API

Okay, tam sim no cia saib ntawm Network tab thiab xyuas seb qhov kev tshawb nrhiav lwm txoj hauv kev uas rov qab los tsuas yog peb qhov profile tiag tiag ua haujlwm. Peb nrhiav tau qhov kev thov uas peb txaus siab rau "/api/search/blended" thiab saib cov lus teb.

Bypassing LinkedIn txoj kev tshawb fawb txwv los ntawm kev ua si nrog API

Profiles tuaj nyob rau hauv ib qho 'nrog' array, tab sis twb muaj 15 qhov chaw nyob rau hauv cov ntaub ntawv no, thawj peb ntawm lawv yog cov khoom nrog cov ntaub ntawv ntxiv, txhua yam khoom muaj cov ntaub ntawv ntawm ib qho profile (piv txwv li, seb qhov profile yog hwm. ).

Bypassing LinkedIn txoj kev tshawb fawb txwv los ntawm kev ua si nrog API

12 tom ntej no yog cov profile tiag tiag - cov txiaj ntsig tshawb nrhiav, uas tsuas yog peb yuav qhia rau peb. Raws li koj tuaj yeem twv tau, nws pom tsuas yog cov neeg tau txais cov ntaub ntawv ntxiv (thawj peb yam khoom). Piv txwv li, yog tias koj coj cov lus teb los ntawm qhov profile yam tsis muaj kev txwv, koj yuav tau txais 28 qhov chaw - 10 yam khoom ntxiv. cov ntaub ntawv thiab 18 profiles.

Teb rau profile yam tsis muaj kev txwvBypassing LinkedIn txoj kev tshawb fawb txwv los ntawm kev ua si nrog API
Bypassing LinkedIn txoj kev tshawb fawb txwv los ntawm kev ua si nrog API

Yog vim li cas ntau tshaj 10 profiles tuaj txog, txawm hais tias raws nraim 10 tau thov, thiab lawv tsis koom nrog cov zaub nyob rau hauv ib txoj kev, txawm nyob rau nplooj ntawv tom ntej lawv yuav tsis yog - kuv tsis tau paub. Yog tias koj txheeb xyuas qhov kev thov URL, koj tuaj yeem pom qhov suav = 10 (muaj pes tsawg tus profile kom rov qab los rau hauv cov lus teb, ntau tshaj 49).

Bypassing LinkedIn txoj kev tshawb fawb txwv los ntawm kev ua si nrog API

Kuv zoo siab tau txais cov lus hais txog qhov teeb meem no.

Cia peb sim

Okay, qhov tseem ceeb tshaj plaws uas peb tam sim no paub tseeb yog tias muaj ntau qhov profile hauv cov lus teb dua li lawv qhia peb. Qhov no txhais tau tias peb tuaj yeem tau txais cov ntaub ntawv ntau dua, txawm tias muaj kev txwv. Cia peb sim rub API peb tus kheej, ncaj qha los ntawm console, siv fetch.

Bypassing LinkedIn txoj kev tshawb fawb txwv los ntawm kev ua si nrog API

Raws li qhov xav tau, peb tau txais qhov yuam kev, 403. Qhov no yog vim muaj kev ruaj ntseg, ntawm no peb tsis xa CSRF token (CSRF ntawm Wikipedia. Hauv kev txiav txim siab, ib qho cim cim tau ntxiv rau txhua qhov kev thov, uas tau kuaj xyuas ntawm lub server kom muaj tseeb).

Bypassing LinkedIn txoj kev tshawb fawb txwv los ntawm kev ua si nrog API

Nws tuaj yeem luam tawm los ntawm lwm qhov kev thov ua tiav lossis los ntawm cov ncuav qab zib, qhov twg nws khaws cia hauv 'JSESSIONID' teb.

Qhov twg mus nrhiav lub tokenHeader ntawm lwm qhov kev thov:

Bypassing LinkedIn txoj kev tshawb fawb txwv los ntawm kev ua si nrog API

Los yog los ntawm ncuav qab zib, ncaj qha los ntawm lub console:

Bypassing LinkedIn txoj kev tshawb fawb txwv los ntawm kev ua si nrog API

Cia peb sim dua, lub sijhawm no peb dhau qhov chaw mus nqa, nyob rau hauv uas peb qhia peb csrf-token raws li qhov tsis muaj nyob hauv header.

Bypassing LinkedIn txoj kev tshawb fawb txwv los ntawm kev ua si nrog API

Kev vam meej, peb tau txais tag nrho 10 profile. :tada:

Vim qhov sib txawv ntawm cov headers, cov qauv ntawm cov lus teb yog me ntsis txawv ntawm qhov tau txais nyob rau hauv thawj daim ntawv thov. Koj tuaj yeem tau txais cov qauv zoo ib yam yog tias koj ntxiv 'Accept: 'application/vnd.linkedin.normalized+json+2.1' rau peb cov khoom, ib sab ntawm csrf token.
Piv txwv teb nrog ntxiv headerBypassing LinkedIn txoj kev tshawb fawb txwv los ntawm kev ua si nrog API

Xav paub ntau ntxiv hais txog qhov Accept header

Yuav ua li cas yog tom ntej no?

Tom qab ntawd koj tuaj yeem hloov kho (manually lossis automate) qhov "pib" parameter, taw rau qhov ntsuas, pib ntawm qhov peb yuav muab 10 profiles (default = 0) los ntawm tag nrho cov txiaj ntsig tshawb. Hauv lwm lo lus, los ntawm kev nce nws los ntawm 10 tom qab txhua qhov kev thov, peb tau txais cov nplooj ntawv ib txwm ua los ntawm nplooj ntawv, 10 profiles ib zaug.

Nyob rau theem no kuv muaj cov ntaub ntawv txaus thiab kev ywj pheej los txuas ntxiv ua haujlwm ntawm tus tsiaj project. Tab sis nws yuav muaj kev txhaum tsis txhob sim tso saib cov ntaub ntawv no nyob rau ntawm qhov chaw, vim nws twb nyob ntawm tes. Peb yuav tsis mus rau hauv Ember, uas yog siv rau pem hauv ntej. jQuery tau txuas nrog lub xaib, thiab tau khawb tawm qhov kev paub ntawm cov syntax hauv kev nco, koj tuaj yeem tsim cov hauv qab no hauv ob peb feeb.

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

Yog tias koj ua qhov no ncaj qha rau hauv lub console ntawm nplooj ntawv tshawb nrhiav, nws yuav ntxiv lub pob uas thauj 10 cov ntawv tshiab nrog txhua tus nias thiab muab lawv rau hauv ib daim ntawv teev npe. Tau kawg, hloov lub token thiab URL rau qhov xav tau ua ntej ua qhov no. Qhov profile thaiv yuav muaj lub npe, txoj haujlwm, qhov chaw, txuas mus rau qhov profile thiab qhov chaw tso duab.

Bypassing LinkedIn txoj kev tshawb fawb txwv los ntawm kev ua si nrog API

xaus

Yog li, nrog tsawg kawg ntawm kev siv zog, peb muaj peev xwm nrhiav tau qhov chaw tsis muaj zog thiab rov qab nrhiav tau yam tsis muaj kev txwv. Nws yog txaus los soj ntsuam cov ntaub ntawv thiab nws txoj kev, saib mus rau hauv qhov kev thov nws tus kheej.

Kuv tsis tuaj yeem hais tias qhov no yog qhov teeb meem loj rau LinkedIn, vim nws tsis ua rau muaj kev hem thawj. Qhov siab tshaj plaws yog poob nyiaj vim qhov "kev ua haujlwm", uas tso cai rau koj kom tsis txhob them tus nqi them. Tej zaum cov lus teb rau cov neeg rau zaub mov no yog qhov tsim nyog rau kev ua haujlwm raug ntawm lwm qhov chaw ntawm lub xaib, lossis nws tsuas yog kev tub nkeeg ntawm cov neeg tsim khoom thiab tsis muaj peev txheej uas tsis tso cai rau nws ua kom zoo. (Qhov kev txwv tau tshwm sim thaum Lub Ib Hlis 2015; ua ntej no tsis muaj kev txwv).

PS

Lawm, jQuery code yog ib qho piv txwv tseem ceeb ntawm lub peev xwm. Tam sim no kuv tau tsim qhov browser txuas ntxiv kom haum rau kuv cov kev xav tau. Nws ntxiv cov nyees khawm tswj thiab ua kom tiav cov ntaub ntawv nrog cov duab, khawm caw thiab kev sib txuas dav dav. Ntxiv rau, nws dynamically sau cov ntxaij lim dej rau qhov chaw, tuam txhab, thiab lwm yam, thiab muab ib tug token los ntawm ncuav qab zib. Yog li tsis tas yuav hardcode dab tsi ntxiv lawm. Zoo, nws ntxiv cov chaw teeb tsa ntxiv, ib qho "ntau npaum li cas profiles thov ib zaug, mus txog 49."

Bypassing LinkedIn txoj kev tshawb fawb txwv los ntawm kev ua si nrog API

Kuv tseem tab tom ua haujlwm ntawm qhov sib ntxiv no thiab npaj yuav tso tawm rau pej xeem. Sau yog koj txaus siab.

Tau qhov twg los: www.hab.com

Ntxiv ib saib