د API سره لوبې کولو سره د LinkedIn د لټون حد څخه تیریدل

محدودیت

په LinkedIn کې دا ډول محدودیت شتون لري - د تجارتي استعمال حد. دا خورا احتمال لري چې تاسو، زما په څیر، تر دې وروستیو پورې، هیڅکله ورسره مخ شوي یا اوریدلي ندي.

د API سره لوبې کولو سره د LinkedIn د لټون حد څخه تیریدل

د حد جوهر دا دی چې که تاسو ډیری وختونه د خپلو اړیکو څخه بهر د خلکو لټون وکاروئ (هیڅ دقیق میټریکونه شتون نلري ، الګوریتم ستاسو د عملونو پراساس پریکړه کوي - څومره ځله او څومره تاسو لټون کړی ، خلک اضافه کړي) ، نو د لټون پایله د 1000 پرځای به په دریو پروفایلونو پورې محدود وي (ډیفالټ 100 مخونه، په هره پاڼه کې 10 پروفایلونه). حد د هرې میاشتې په پیل کې بیا تنظیم شوی. په طبیعي توګه، پریمیم حسابونه دا محدودیت نلري.

مګر ډیر وخت دمخه، د پالتو پروژې لپاره، ما د LinkedIn لټون سره ډیره لوبه پیل کړه او ناڅاپه یې دا محدودیت ترلاسه کړ. په طبیعي توګه، ما دا ډیر خوښ نه کړ، ځکه چې ما دا د کوم سوداګریزو موخو لپاره نه دی کارولی، نو زما لومړی فکر دا و چې محدودیت مطالعه کړم او د هغې شاوخوا ته د رسیدو هڅه وکړم.

[یو مهم وضاحت: په مقاله کې مواد یوازې د معلوماتي او تعلیمي موخو لپاره وړاندې شوي. لیکوال د سوداګریزو موخو لپاره د دوی کارول نه هڅوي.]

موږ ستونزه مطالعه کوو

موږ لرو: د صفحې سره د لسو پروفایلونو پرځای ، لټون یوازې درې بیرته راګرځوي ، وروسته له دې چې د پریمیم حساب "سپارښتنې" سره یو بلاک داخل شوی او لاندې ړنګ او د کلیک کولو وړ پروفایلونه دي.

سمدلاسه ، لاس د دې پټ پروفایلونو لیدو لپاره د پراختیا کونکي کنسول ته رسي - شاید موږ کولی شو ځینې تیاره سټایلونه لرې کړو ، یا په مارک اپ کې د بلاک څخه معلومات راوباسئ. مګر، د اټکل له مخې، دا پروفایلونه یوازې دي ځای لرونکی انځورونه او هیڅ معلومات نه ساتل کیږي.

د API سره لوبې کولو سره د LinkedIn د لټون حد څخه تیریدل

سمه ده، اوس راځئ چې د شبکې ټب وګورو او وګورئ چې ایا د بدیل لټون پایلې چې یوازې درې پروفایلونه بیرته راګرځوي په حقیقت کې کار کوي. موږ هغه غوښتنه پیدا کوو چې موږ یې د "/api/search/blended" لپاره لیوالتیا لرو او ځواب ته ګورو.

د API سره لوبې کولو سره د LinkedIn د لټون حد څخه تیریدل

پروفایلونه په یوه 'شامل شوي' صف کې راځي، مګر په دې کې دمخه 15 ادارې شتون لري. پدې حالت کې، لومړی درې هغه توکي دي چې اضافي معلومات لري، هر څیز د ځانګړي پروفایل په اړه معلومات لري (د مثال په توګه، ایا پروفایل پریمیم دی که نه ).

د API سره لوبې کولو سره د LinkedIn د لټون حد څخه تیریدل

راتلونکی 12 اصلي پروفایلونه دي - د لټون پایلې، چې یوازې درې به یې موږ ته وښودل شي. لکه څنګه چې تاسو دمخه اټکل کولی شئ، دا یوازې هغه کسان ښیې چې اضافي معلومات ترلاسه کوي (لومړي درې شیان). د مثال په توګه، که تاسو د محدودیت پرته د پروفایل څخه ځواب واخلئ، تاسو به 28 ادارې ترلاسه کړئ - 10 اضافي توکي. معلومات او 18 پروفایلونه.

د محدودیت پرته د پروفایل لپاره ځوابد API سره لوبې کولو سره د LinkedIn د لټون حد څخه تیریدل
د API سره لوبې کولو سره د LinkedIn د لټون حد څخه تیریدل

ولې له 10 څخه ډیر پروفایلونه راځي، که څه هم دقیقا 10 غوښتل شوي، او دوی په هیڅ ډول په نندارتون کې برخه نه اخلي، حتی په راتلونکې پاڼه کې به نه وي - زه لاهم نه پوهیږم. که تاسو د غوښتنې URL تحلیل کړئ، تاسو کولی شئ هغه شمیره = 10 وګورئ (څومره پروفایلونه چې په ځواب کې بیرته راستانه شي، اعظمي 49).

د API سره لوبې کولو سره د LinkedIn د لټون حد څخه تیریدل

زه به خوښ شم چې پدې مسله کې کوم نظر ترلاسه کړم.

راځئ چې تجربه وکړو

ښه، ترټولو مهم شی چې موږ اوس د ډاډ لپاره پوهیږو دا دی چې په ځواب کې ډیر پروفایلونه شتون لري چې دوی موږ ته ښیې. دا پدې مانا ده چې موږ کولی شو د حد سره سره نور معلومات ترلاسه کړو. راځئ هڅه وکړو چې API پخپله راوباسئ ، مستقیم له کنسول څخه ، د راوړلو په کارولو سره.

د API سره لوبې کولو سره د LinkedIn د لټون حد څخه تیریدل

لکه څنګه چې تمه کیده، موږ یوه تېروتنه ترلاسه کوو، 403. دا د امنیت له امله دی، دلته موږ د CSRF نښه نه لیږو (CSRF په ويکيپېډيا کې. په لنډه توګه، په هرې غوښتنې کې یو ځانګړی نښه اضافه کیږي، کوم چې په سرور کې د اعتبار لپاره چک کیږي).

د API سره لوبې کولو سره د LinkedIn د لټون حد څخه تیریدل

دا د کومې بلې بریالۍ غوښتنې یا کوکیز څخه کاپي کیدی شي، چیرې چې دا د 'JSESSIONID' په ساحه کې زیرمه شوی.

چیرې چې نښه ومومئد بلې غوښتنې سرلیک:

د API سره لوبې کولو سره د LinkedIn د لټون حد څخه تیریدل

یا د کوکیز څخه، مستقیم د کنسول له لارې:

د API سره لوبې کولو سره د LinkedIn د لټون حد څخه تیریدل

راځئ چې بیا هڅه وکړو، دا ځل موږ د راوړلو لپاره ترتیبات تیر کړو، په کوم کې چې موږ خپل csrf-token په سر کې د پیرامیټر په توګه مشخص کوو.

د API سره لوبې کولو سره د LinkedIn د لټون حد څخه تیریدل

بریالیتوب، موږ ټول 10 پروفایلونه ترلاسه کوو. tada:

په سرلیکونو کې د توپیر له امله، د ځواب جوړښت د هغه څه څخه لږ توپیر لري چې په اصلي غوښتنه کې ترلاسه شوي. تاسو کولی شئ ورته جوړښت ترلاسه کړئ که تاسو زموږ اعتراض ته 'قبول کړئ: 'application/vnd.linkedin.normalized+json+2.1' اضافه کړئ، د csrf نښه ته نږدې.
د اضافه شوي سرلیک سره د مثال ځوابد API سره لوبې کولو سره د LinkedIn د لټون حد څخه تیریدل

د منلو سرلیک په اړه نور

څه راتلونکو؟

بیا تاسو کولی شئ د `start` پیرامیټر ترمیم (په لاسي یا اتوماتیک) کړئ، شاخص ته اشاره وکړئ، له کوم څخه چې موږ ته به د ټولې پلټنې پایلې څخه 10 پروفایلونه (ډیفالټ = 0) درکړل شي. په بل عبارت، د هرې غوښتنې وروسته د 10 لخوا زیاتولو سره، موږ په یو وخت کې د 10 پروفایلونه، د پاڼې په واسطه د پاڼې معمول ترلاسه کوو.

پدې مرحله کې ما د پالتو پروژې کار ته دوام ورکولو لپاره کافي معلومات او آزادي درلوده. مګر دا به ګناه وي چې هڅه ونه کړي چې دا معلومات په سم ځای کې ښکاره کړي، ځکه چې دا دمخه په لاس کې و. موږ به امبر ته نه ځو ، کوم چې په مخ کې کارول کیږي. jQuery د سایټ سره وصل شوی و، او په حافظه کې د اساسي نحو پوهه راوباسئ، تاسو کولی شئ په څو دقیقو کې لاندې جوړ کړئ.

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

که تاسو دا په مستقیم ډول د لټون پاڼې په کنسول کې ترسره کوئ، دا به یو تڼۍ اضافه کړي چې په هر کلیک سره 10 نوي پروفایلونه پورته کوي او په لیست کې یې وړاندې کوي. البته، د دې کولو دمخه اړین یو ته نښه او URL بدل کړئ. د پروفایل بلاک به نوم، موقعیت، موقعیت، د پروفایل لینک او د ځای لرونکي انځور ولري.

د API سره لوبې کولو سره د LinkedIn د لټون حد څخه تیریدل

پایلې

په دې توګه، د لږ تر لږه هڅو سره، موږ وکولای شو چې ضعیف ځای ومومئ او پرته له کوم محدودیت څخه زموږ لټون بیرته ترلاسه کړو. دا د معلوماتو او د هغې لاره تحلیل کولو لپاره کافي وه، پخپله غوښتنه وګورئ.

زه نشم ویلای چې دا د LinkedIn لپاره یوه جدي ستونزه ده، ځکه چې دا کوم ګواښ نه کوي. اعظمي ګټه د داسې "کارونو" له امله له لاسه ورکول کیږي ، کوم چې تاسو ته اجازه درکوي د پریمیم تادیې څخه مخنیوی وکړئ. شاید د داسې سرور ځواب د سایټ د نورو برخو سم عملیاتو لپاره اړین وي، یا دا په ساده ډول د پراختیا کونکو سست او د سرچینو نشتوالی دی چې اجازه نه ورکوي چې دا ښه ترسره شي. (محدودیت د 2015 په جنوري کې څرګند شو؛ تر دې دمخه هیڅ حد نه و).

PS

په طبیعي توګه، د jQuery کوډ د وړتیاوو یو پر ځای مثال دی. اوس مهال ما د خپلو اړتیاو سره سم د براوزر توسیع رامینځته کړی. دا د کنټرول تڼۍ اضافه کوي او د عکسونو، د بلنې تڼۍ او عمومي اړیکو سره بشپړ پروفایل وړاندې کوي. برسیره پردې، دا په متحرک ډول د ځایونو، شرکتونو، او نورو شیانو لپاره فلټرونه راټولوي، او د کوکیز څخه نښه بیرته ترلاسه کوي. نو نور هیڅ شی هارډ کوډ کولو ته اړتیا نشته. ښه، دا د اضافي ترتیباتو ساحې اضافه کوي، یو la "په یو وخت کې د څو پروفایلونو غوښتنه کول، تر 49 پورې."

د API سره لوبې کولو سره د LinkedIn د لټون حد څخه تیریدل

زه لاهم په دې اضافه کار کوم او پلان لرم چې خلکو ته یې خپور کړم. که تاسو لیوالتیا لرئ ولیکئ.

سرچینه: www.habr.com

Add a comment