ከኤፒአይ ጋር በመጫወት የLinkedIn ፍለጋ ገደብ ማለፍ

ገደብ

በ LinkedIn ውስጥ እንደዚህ ያለ ገደብ አለ - የንግድ አጠቃቀም ገደብ. አንተ እንደ እኔ እስከ ቅርብ ጊዜ ድረስ አጋጥሞህ የማታውቅ ወይም ሰምተህ የማታውቀው በጣም ሊሆን ይችላል።

ከኤፒአይ ጋር በመጫወት የLinkedIn ፍለጋ ገደብ ማለፍ

የገደቡ ዋና ነገር ከእውቂያዎችዎ ውጭ ያሉ ሰዎችን ፍለጋን ብዙ ጊዜ የሚጠቀሙ ከሆነ (ትክክለኛ መለኪያዎች የሉም ፣ አልጎሪዝም በድርጊትዎ ላይ በመመስረት - ምን ያህል ጊዜ እና ምን ያህል እንደፈለጉ ፣ የተጨመሩ ሰዎች) ፣ ከዚያ የፍለጋ ውጤቱ ነው። በ1000 (ነባሪ 100 ገፆች፣ 10 መገለጫዎች በገጽ) ፈንታ በሶስት መገለጫዎች የተገደበ ይሆናል። ገደቡ በየወሩ መጀመሪያ ላይ ዳግም ይጀመራል። በተፈጥሮ፣ ፕሪሚየም መለያዎች ይህ ገደብ የላቸውም.

ግን ከረጅም ጊዜ በፊት ፣ ለቤት እንስሳት ፕሮጀክት ፣ በ LinkedIn ፍለጋ ብዙ መጫወት ጀመርኩ እና በድንገት ይህንን ገደብ አገኘሁ። በተፈጥሮ ፣ ይህንን ብዙም አልወደድኩትም ፣ ምክንያቱም ለማንኛውም ለንግድ ዓላማ አልተጠቀምኩም ፣ ስለሆነም የመጀመሪያ ሀሳቤ ውስንነቱን ማጥናት እና እሱን ለመዞር መሞከር ነበር።

[ጠቃሚ ማብራሪያ: በአንቀጹ ውስጥ ያሉት ቁሳቁሶች ለመረጃ እና ለትምህርታዊ ዓላማዎች ብቻ ቀርበዋል. ደራሲው ለንግድ ዓላማዎች መጠቀማቸውን አያበረታታም።]

ችግሩን እያጠናን ነው።

እኛ አለን፡ ከአስር መገለጫዎች በገጽ መዝገብ፣ ፍለጋው የሚመለሰው ሶስት ብቻ ነው፣ ከዚያ በኋላ የፕሪሚየም መለያ “ምክር” ያለው ብሎክ ገብቷል እና ከዚህ በታች ደብዛዛ እና ጠቅ የማይደረግ መገለጫዎች ናቸው።

ወዲያውኑ እጁ እነዚህን የተደበቁ መገለጫዎች ለማየት ወደ ገንቢ ኮንሶል ይደርሳል - ምናልባት አንዳንድ የማደብዘዣ ቅጦችን እናስወግዳለን ወይም መረጃን በማርክ ማቅያው ውስጥ ካለው ብሎክ ማውጣት እንችላለን። ግን፣ በጣም የሚጠበቀው፣ እነዚህ መገለጫዎች ልክ ናቸው። የቦታ ያዥ ስዕሎች እና ምንም መረጃ አይከማችም.

ከኤፒአይ ጋር በመጫወት የLinkedIn ፍለጋ ገደብ ማለፍ

እሺ፣ አሁን የኔትወርክ ትርን እንይ እና ሶስት መገለጫዎችን ብቻ የሚመልሱ ተለዋጭ የፍለጋ ውጤቶች በትክክል የሚሰሩ መሆናቸውን ያረጋግጡ። ለ"/api/search/blended" የምንፈልገውን ጥያቄ አግኝተናል እና ምላሹን ተመልከት።

ከኤፒአይ ጋር በመጫወት የLinkedIn ፍለጋ ገደብ ማለፍ

መገለጫዎች በ‹የተካተቱ› አደራደር ውስጥ ይመጣሉ፣ ነገር ግን በውስጡ 15 አካላት አሉ። በዚህ አጋጣሚ፣ የመጀመሪያዎቹ ሦስቱ ተጨማሪ መረጃ ያላቸው ነገሮች ናቸው፣ እያንዳንዱ ነገር በአንድ የተወሰነ መገለጫ ላይ መረጃ ይይዛል (ለምሳሌ፣ መገለጫው ፕሪሚየም ይሁን አይሁን) ).

ከኤፒአይ ጋር በመጫወት የLinkedIn ፍለጋ ገደብ ማለፍ

የሚቀጥሉት 12 እውነተኛ መገለጫዎች ናቸው - የፍለጋ ውጤቶች, ከእነዚህ ውስጥ ሦስቱ ብቻ ይታዩናል. አስቀድመው እንደሚገምቱት, ተጨማሪ መረጃ የተቀበሉትን ብቻ ያሳያል (የመጀመሪያዎቹ ሶስት እቃዎች). ለምሳሌ መልሱን ከመገለጫ ያለ ገደብ ከወሰዱ 28 አካላት - 10 እቃዎች ከተጨማሪ ጋር ይቀበላሉ. መረጃ እና 18 መገለጫዎች.

ለፕሮፋይል ያለገደብ መልስ ይስጡከኤፒአይ ጋር በመጫወት የLinkedIn ፍለጋ ገደብ ማለፍ
ከኤፒአይ ጋር በመጫወት የLinkedIn ፍለጋ ገደብ ማለፍ

ከ 10 በላይ መገለጫዎች ለምን ይደርሳሉ ፣ ምንም እንኳን በትክክል 10 ቢጠየቁም ፣ እና በምንም መልኩ በማሳያው ላይ አይሳተፉም ፣ በሚቀጥለው ገጽ ላይ እንኳን አይሆኑም - እስካሁን አላውቅም። የጥያቄውን ዩአርኤል ከተተነትኑ ያንን count=10 (በምላሹ ምን ያህል መገለጫዎች እንደሚመለሱ፣ ቢበዛ 49) ማየት ይችላሉ።

ከኤፒአይ ጋር በመጫወት የLinkedIn ፍለጋ ገደብ ማለፍ

በዚህ ጉዳይ ላይ ማንኛውንም አስተያየት ቢቀበል ደስ ይለኛል.

እንሞክር

እሺ፣ አሁን በእርግጠኝነት የምናውቀው በጣም አስፈላጊው ነገር በምላሹ ውስጥ ከሚያሳዩን በላይ ብዙ መገለጫዎች እንዳሉ ነው። ይህ ማለት ገደብ ቢኖረውም ተጨማሪ ውሂብ ማግኘት እንችላለን ማለት ነው። ፈልጎን ተጠቅመን ኤፒአይን እራሳችንን በቀጥታ ከኮንሶል ለማውጣት እንሞክር።

ከኤፒአይ ጋር በመጫወት የLinkedIn ፍለጋ ገደብ ማለፍ

እንደተጠበቀው ስህተት አጋጥሞናል፣ 403. ይህ የሆነው በደህንነት ምክንያት ነው፣ እዚህ የCSRF ቶከን አንልክም (CSRF በዊኪፔዲያ. በአጭሩ ለእያንዳንዱ ጥያቄ ልዩ የሆነ ማስመሰያ ተጨምሯል፣ ይህም በአገልጋዩ ላይ ለትክክለኛነቱ ይጣራል።

ከኤፒአይ ጋር በመጫወት የLinkedIn ፍለጋ ገደብ ማለፍ

ከማንኛውም ሌላ የተሳካ ጥያቄ ወይም በ'JSESSIONID' መስክ ውስጥ ከተከማቸ ኩኪዎች ሊገለበጥ ይችላል።

ማስመሰያው የት እንደሚገኝየሌላ ጥያቄ ራስጌ፡-

ከኤፒአይ ጋር በመጫወት የLinkedIn ፍለጋ ገደብ ማለፍ

ወይም ከኩኪዎች፣ በቀጥታ በኮንሶሉ በኩል፡-

ከኤፒአይ ጋር በመጫወት የLinkedIn ፍለጋ ገደብ ማለፍ

እንደገና እንሞክር፣ በዚህ ጊዜ ቅንብሮቹን ለማምጣት እናልፋለን፣ በዚህ ውስጥ የእኛን csrf-token በአርዕስት ውስጥ እንደ መለኪያ እንገልፃለን።

ከኤፒአይ ጋር በመጫወት የLinkedIn ፍለጋ ገደብ ማለፍ

ስኬት፣ ሁሉንም 10 መገለጫዎች እንቀበላለን። :ታዳ:

በአርእስቶች ልዩነት ምክንያት የምላሹ አወቃቀሩ ከመጀመሪያው ጥያቄ ከተቀበለው ትንሽ የተለየ ነው. በእቃችን ላይ ከ csrf ቶከን ቀጥሎ 'ተቀበል:' መተግበሪያ/vnd.linkedin.normalized+json+2.1' ካከሉ ተመሳሳይ መዋቅር ማግኘት ይችላሉ።
የምሳሌ ምላሽ ከተጨመረ ራስጌ ጋርከኤፒአይ ጋር በመጫወት የ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="/am/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="/am/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 አዲስ መገለጫዎችን የሚጭን ቁልፍ ይጨምርና በዝርዝር ውስጥ ያስቀምጣቸዋል። በእርግጥ ይህን ከማድረግዎ በፊት ማስመሰያውን እና ዩአርኤልን ወደሚፈለገው ይለውጡ። የመገለጫ እገዳው ስም, አቀማመጥ, ቦታ, የመገለጫ አገናኝ እና የቦታ ያዥ ምስል ይይዛል.

ከኤፒአይ ጋር በመጫወት የLinkedIn ፍለጋ ገደብ ማለፍ

መደምደሚያ

ስለዚህም በትንሹ ጥረት ደካማውን ቦታ አግኝተን ያለገደብ ፍለጋችንን መልሰን ማግኘት ችለናል። መረጃውን እና መንገዱን ለመተንተን በቂ ነበር, ጥያቄውን እራሱ ይመልከቱ.

ይህ ለLinkedIn ይህ ከባድ ችግር ነው ማለት አልችልም, ምክንያቱም ምንም አይነት ስጋት አይፈጥርም. በእንደዚህ አይነት "በአሰራር ዘዴዎች" ምክንያት ከፍተኛው ትርፍ ጠፍቷል, ይህም ለዋና ክፍያ እንዳይከፍሉ ያስችልዎታል. ምናልባት እንዲህ ዓይነቱ የአገልጋይ ምላሽ ለሌሎች የጣቢያው ክፍሎች ትክክለኛ አሠራር አስፈላጊ ነው ፣ ወይም በቀላሉ የገንቢዎች ስንፍና እና በጥሩ ሁኔታ እንዲሠራ የማይፈቅድ የግብዓት እጥረት ነው። (ገደቡ በጥር 2015 ታየ፤ ከዚህ በፊት ምንም ገደብ አልነበረም)።

PS

በተፈጥሮ፣ የ jQuery ኮድ የችሎታዎቹ በጣም ጥንታዊ ምሳሌ ነው። በአሁኑ ጊዜ ፍላጎቴን የሚያሟላ አሳሽ ቅጥያ ፈጠርኩ። የቁጥጥር አዝራሮችን ይጨምራል እና ሙሉ መገለጫዎችን በስዕሎች ፣ የግብዣ ቁልፍ እና አጠቃላይ ግንኙነቶች ያቀርባል። በተጨማሪም፣ በተለዋዋጭ ለአካባቢዎች፣ ለኩባንያዎች እና ለሌሎች ነገሮች ማጣሪያዎችን ይሰበስባል እና ከኩኪዎች ምልክት ያወጣል። ስለዚህ ምንም ነገር ሃርድ ኮድ ማድረግ አያስፈልግም። ደህና፣ ተጨማሪ የቅንብሮች መስኮችን ይጨምራል፣ “በአንድ ጊዜ ስንት መገለጫዎች እንደሚጠይቁ፣ እስከ 49” ድረስ።

ከኤፒአይ ጋር በመጫወት የLinkedIn ፍለጋ ገደብ ማለፍ

አሁንም በዚህ መደመር ላይ እየሰራሁ ነው እና ለህዝብ ይፋ ለማድረግ እቅድ አለኝ። ፍላጎት ካሎት ይፃፉ።

ምንጭ: hab.com

አስተያየት ያክሉ