Автор оригинала: FreeCodeCamp Community Member.
от Yk Sugi
На LinkedIn есть раздел, который называется, «люди, которые вы можете знать». Это под Моя сеть вкладка
Это страница, которая предлагает людям, с которыми вы можете связаться.
Вы можете нажать эти Соединить Кнопки для отправки запросов соединения людям в этом списке.
Несколько лет назад я нашел эту страницу, и я начал случайно добавлять там людей. Я бы просто нажал на кнопку Connect на каждом человеке, которого я нашел на этой странице.
Я просто подумал, что это может быть полезно иметь много соединений на LinkedIn, чтобы получить вид рабочих мест, которые я хотел получить, например, программный инженер стажировки.
Но через некоторое время он стал немного громоздким, чтобы поддерживать эти кнопки соединения вручную.
Итак, я решил сделать немного бота, чтобы нажать на эти кнопки для меня.
Это статья о том, как я сделал этот бот, что произошло в результате, а то, что я узнал от этого.
Как я сделал бот
Инструменты, которые я использовал
Я сделал этот простой бот, чтобы добавить случайных людей на LinkedIn с JavaScript и Greasemonkey Отказ
Greasemonkey – это дополнение Firefox, которое помогает вам управлять пользовательским кодом JavaScript.
С этим вы можете установить вещи, чтобы определенный набор кода запускается автоматически при открытии определенного URL.
Вы также можете хранить некоторые данные в Greasemonkey. Я использовал эту функцию, чтобы отслеживать количество людей, которые я добавил с этим ботом. Таким образом, я мог постоянно следить за этим номером, даже когда я закрыл браузер или обновил страницу.
Код, который я использовал
К сожалению, я не сохранил код, который я использовал, чтобы создать свой бот после того, как я использовал его.
Итак, в этой статье я сделаю все возможное, чтобы воссоздать его как можно ближе.
Изначально, чтобы создать этот бит кода, я использовал Google Chrome. Позже я перешел на Firefox, чтобы использовать Greaseminkey, которую я упоминал ранее. Я решил использовать Chrome изначально только потому, что мне больше привыкли.
Теперь, давайте вместе пройдемся, как я бы воссоздал этот код сегодня. В этой статье просто держать его простым, я собираюсь показать вам основную функциональность этого бота – добавляя людей. Итак, я собираюсь пропустить часть использования Greasemonkey, чтобы сохранить данные настойчиво здесь.
Пожалуйста, дайте мне знать в комментариях, если вы хотите, чтобы я охватил эту часть в отдельной статье.
Шаг 0: Основы JavaScript
Если вы не слишком знакомы с JavaScript, давайте быстро перейдем на некоторые основы JavaScript здесь.
Мы собираемся использовать Google Chrome здесь, но вы можете использовать любой браузер, который вы хотите использовать.
Во-первых, откройте любой сайт, скажем, Google.com.
Тогда вам нужно будет открыть там консоль JavaScript браузера.
В Google Chrome вы можете сделать это несколькими разными способами.
То, как я обычно делаю это следующее:
- Щелкните правой кнопкой мыши в любом месте на странице.
- Затем нажмите Проверять Из меню, который выскочил.
- Когда вы нажмете на нем, окно, как следует следующее.
- Затем нажмите Консоль Вкладка там, чтобы показать консоль JavaScript.
- Как только вы нажмете на Консоль Вкладка, вы должны увидеть консоль JavaScript.
Это то, где вы можете ввести любой код JavaScript, чтобы проверить его. Вы можете использовать код, который вы вводите, чтобы взаимодействовать со страницей, которая открыта в вашем браузере.
Например, попробуйте набрать в следующем коде в консоли и нажмите Enter.
selected = document.querySelector('body');
Это выбирает Тело Тег на странице, которая открыта на браузере. Затем он присваивает это новую переменную под названием выбран Отказ
В Chrome и Firefox есть сокращение для:
selected = document.querySelector('body');
Вместо этого вы можете просто написать:
selected = $('body');
Этот код эквивалентен одному выше.
Я собираюсь использовать эту сокращенную обозначение с знаком доллара в этой статье, чтобы сохранить наш код коротким и простым.
Кроме того, не беспокойтесь об этом, если вы еще не знаете основы HTML и JavaScript. Я сделаю все возможное, чтобы написать эту статью, так что легко понять даже для начинающих.
Если вы не заинтересованы в коде, я собираюсь показать вам, вы также можете просто перейти к разделам о том, что произошло, и что я узнал от этого опыта в конце.
Теперь давайте пройдем через код нашего бота, шаг за шагом.
Шаг 1: Найти целевой элемент
Во-первых, вам нужно будет записать код код, который находит кнопки, которые вы хотите нажать.
Во-первых, войти в LinkedIn. Затем перейдите на мою сетевую вкладку. В настоящее время в https://www.linkedin.com/mynetwork/ (Июль 2018 г.).
Вы должны быть в состоянии найти Люди, которые вы можете знать раздел там.
Затем, на Chrome, щелкните правой кнопкой мыши кнопку «Подключиться» на одном из рекомендованных там людей. Затем нажмите Проверять Отказ
Как только вы сделаете это, элемент, который вы просто нажали, будут выделены в окне разработчика.
Это HTML-код, который выделен синим цветом:
Connect
Это промежуток Вкладка, которая показывает текст: Соединить Отказ Что мы действительно хотим нажать на это не так, но его родительский элемент, который является кнопкой.
Вы можете найти его прямо над элементом охвата, который мы выбрали.
Давайте теперь рассмотрим этот элемент кнопки:
Здесь есть куча вещей, но вот важная часть:
По сути, это элемент кнопки, атрибут которого имя управления данными , «приглашение».
В нашем скрипте все, что нам нужно сделать, это выбрать такие элементы, и нажмите их.
Вы можете выбрать эти элементы с помощью этого куска кода:
selected = $("button[data-control-name=invite]");
Это читает, что выберите все элементы кнопки, чье имя управления данными является «приглашение».
В любом случае, как только вы запустите этот код в вашей Chrome Console, вы сможете увидеть, что правильные элементы были выбраны.
Теперь, с этим кусочком кода – Выбранные =] «);
– Ваш браузер находит несколько элементов кнопок и помещает их в массив. Чтобы выбрать первый, вы можете просто выбрать первый элемент в этом массиве, как так:
toClick = $("button[data-control-name=invite]")[0];
Тогда вы можете нажать на него с этим:
toClick.click();
Если он пройдет, вы должны увидеть окно подтверждения.
Шаг 2: петля через несколько элементов целевых элементов
Теперь следующим шагом является петлю через несколько элементов целевых элементов, чтобы мы могли добавить несколько людей.
После некоторых экспериментов я понял, что есть более простой способ выбрать несколько кнопок и петлей через них, чем тот, который я показал ранее.
Вот как я бы сделал это.
Во-первых, используйте проверку элемента, чтобы проанализировать структуру этой страницы немного больше. Тогда вы должны увидеть, что Люди, которые вы можете знать это просто неупорядоченный список.
Вы должны быть в состоянии найти код, который выглядит так:
Родительский элемент – это UL
(Неупорядоченный список) элемент. Его дети Ли
(список списка) элементы.
Каждый Ли
Элемент представляет каждый из Люди, которые вы можете знать Карты, которые вы видите на экране.
Выбрав эти Ли
Элементы вместо того, чтобы выбрать кнопки напрямую, на самом деле она становится легче пройти несколько людей.
Вы можете выбрать это UL
элемент, родитель Ли
Элементы, как это:
ul = $('ul.mn-pymk-list__cards')[0];
Это говорит, выберите UL
элемент с классом ul.mn-pymk-list__cards
Отказ Нам нужно добавить [0]
В конце ведения необработанного результата представляет собой массив, содержащий один элемент.
Тогда вы можете выбрать первый Ли
Элемент (карта первого лица) под UL
Элемент, как это:
firstLi = ul.querySelector('li');
Нам не нужно добавлять [0]
В конце этого утверждения, поскольку функция QuerySelector () возвращает только один элемент.
Тогда из Firstli
, вы можете выбрать кнопку, которую нам нужно нажать так:
buttonToClick = firstLi.querySelector("button[data-control-name=invite]");
После нажатия на эту кнопку с buttontoclick.click ()
мы должны удалить это Ли
Элемент, чтобы мы могли перейти к следующему Ли
элемент (карта следующего человека). Мы можем сделать это с этим:
ul.removeChild(firstLi);
Положи их все вместе и кладя все в то время как цикл, вы получите что-то подобное:
ul = $('ul.mn-pymk-list__cards')[0];firstLi = ul.querySelector('li');while(firstLi){ // do this while firstLi still exists. buttonToClick = firstLi.querySelector("button[data-control-name=invite]"); ul.removeChild(firstLi); firstLi = ul.querySelector('li');}
Этот код должен работать, но имеет несколько вопросов.
- Мы добавляем людей Действительно Быстро с этим, так что это будет трудно знать, что происходит, когда вы запускаете этот код.
- Мы не отслеживаем, сколько людей мы добавили.
- Мы предполагаем, что
Bootontoclick
всегда является правильной кнопкой, чтобы нажать. Иногда эта кнопка имеет текст «Пригласить» вместо «Connect». Мы не хотим нажимать на слишком много из этих кнопок «Пригласить».
Шаг 3: Уточните наш код
Я исправил все вопросы, которые я упомянул выше, и собрал относительно простую кусок кода ниже.
Это также здесь на гид. Возможно, легче прочитать там.
// this function allows us to stop our code for |ms| milliseconds.function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms));}
// I've put our main code into this function.async function addPeople() { ul = $('ul.mn-pymk-list__cards')[0]; firstLi = ul.querySelector('li'); count = 0; // this is the count of how many people you've added while(firstLi && count < 100){ // stop after adding 100 people buttonToClick = firstLi.querySelector("button[data-control-name=invite]"); // make sure that this button contains the text "Connect" if (buttonToClick.innerText.includes("Connect")){ buttonToClick.click(); count += 1; console.log("I have added " + count + " people so far."); } ul.removeChild(firstLi); await sleep(1000); // stop this function for 1 second here. firstLi = ul.querySelector('li'); }}
addPeople();
Если вы внимательно изучите этот код, вы должны быть в состоянии заметить пару изменений, которые я сделал:
- Я поставил наш код в async Функция под названием AddPeople (). В этой функции каждый раз, когда мы добавляем кого-то, мы паузом на 1 секунду с функцией Sleep (). Подробнее об этом шаблоне здесь Отказ
- Я добавил
Считать
Переменная, чтобы отслеживать, сколько людей мы добавили. - Я добавил это, если заявление:
Если (buttertoclick.innertext.includes ("connect") {...}
. Таким образом, мы можем убедиться, что кнопка мы нажимаем, содержит слово «подключить» внутри него.
С этими изменениями, когда я запускаю этот код, это выглядит так:
Шаг 4: Сделайте дальнейшие улучшения!
Наверху того, что я показал выше, у меня было еще несколько функций, когда я действительно использовал свой бот, чтобы добавить кучу людей на LinkedIn.
Прежде всего, я использовал Greasemonkey, которую я упомянул ранее, чтобы отслеживать общее количество людей, которые я добавил.
Кроме того, чтобы не быть обнаруженным в качестве бота LinkedIn, я добавил несколько вещей:
- Я рандомизировал порядок, в котором я добавил людей.
- Я рандомизировал количество времени, которое я ждал каждый раз, когда добавил новый человек.
Я оставлю все это как проблемы с осуществлением для вас, чтобы решить, если вы заинтересованы в их решении?
Что случилось
С моим сценарием я закончил добавить 2000+ соединений. Затем, если я помню правильно, около 400 из них добавили меня обратно.
В результате я пошел от 300 соединений до 700+ соединений в течение недели или около того!
Затем, через некоторое время я забанил Синдину, добавив больше людей. Я не знал, что я мог бы забанить! Я был напуган немного, но запрет поднялся через 2 месяца или около того.
Что еще более важно, я смог приземлиться на несколько интервью от этих 400+ новых соединений. Одно из интервью было с этой компанией под названием Палантир.
Вот скриншот сообщения, которое я получил от них:
Что я узнал от этого опыта
Я думал, что я делал довольно глупо в то время, но я много узнал от этого опыта.
Надевание # 1
Прежде всего, благодаря этому опыту я понял, что Linkedin на самом деле работает для получения рабочих мест. В конце концов, я смог получить несколько интервью на работу с моим ботом.
Затем, через некоторое время я также понял, что добавление тысяч случайных людей не было наиболее эффективным способом использования LinkedIn. С таким подходом вы в конечном итоге добавляете много людей, которых вам не нужно добавлять.
Итак, после этого опыта я изменил свой подход к более сосредоточенному.
С моим новым подходом я бы только добавил рекрутеров компаний, на которых я хотел работать. Тогда я бы только отправил сообщения людям, которые добавили меня обратно.
Оказалось гораздо более целенаправленную, эффективную стратегию для использования LinkedIn. С этой новой стратегией я смог получить еще несколько интервью на работу с несколькими технологическими компаниями, включая Yelp и Xamarin. На этот раз мне не нужно было добавлять тысячи новых подключений для достижения этого результата?
Примечание: я говорю больше об этой стратегии в Эта статья , на всякий случай, если вам интересно это.
На вынос # 2.
Веселье – лучший способ отточить ваши навыки программирования!
Через этот конкретный проект я смог оттачивать свои навыки JavaScript. То, что я узнал, включен:
- Как установить временное интервал между выполнениями функций
- Как выбрать определенные элементы HTML с JavaScript
- Как хранить данные локально с greasemonkey
Я изучил эти вещи через этот проект, и это не хочелось учиться вообще, потому что это было так весело.
На вынос # 3.
От этого опыта я узнал, что иногда платит что-то странное. Итак, не бойся быть немного озорным и авантюрным, если у вас есть наклона, чтобы сделать это.
Даже после этого небольшого эксперимента я продолжал делать странные вещи для развлечения.
Например, когда я вмешался в Microsoft, я пробежал небольшой эксперимент, где я «украл» кучу паролей сотрудников. Я сделал это, отправив фишинговую электронную почту. Предполагалось, что это огромная отданная лотерея с призами, такими как Xbox и поверхностные ноутбуки. Это был мой хакатон-проект там.
Я также начал Программирование-образование Канал YouTube и в конечном итоге решил Работайте над ним полный рабочий день и выйдите из моего стационарного инженера-программного обеспечения Отказ
Возможно, все эти вещи казались немного странными с другими людьми. Но каждый раз, когда я прошел каждый из этих переживаний, я узнал что-то новое, и у меня были тонны веселья по пути. Я бы сказал, что последний даже сделал мою карьеру.
Итак, опять же, не бойся попробовать что-то странное только для развлечения! Вы можете узнать что-то ценное по пути.
Хорошо, вот это для этой статьи.
Это должно было быть вроде веселой статьи, но я обычно пишу о более серьезных вещах.
Например, у меня есть статьи о Написание инженеров программного обеспечения резюме , Лучшие способы подать заявку на работу инженера программного обеспечения и Как пройти работу в Top Tech Company Отказ
Не стесняйтесь проверять их. Все они здесь на среднем.
Кроме того, как всегда, если у вас есть какие-либо вопросы об этом или что-то еще, пожалуйста, не стесняйтесь, чтобы сообщить мне в комментарии ниже или на Instagram или Twitter (@ykdojo на обоих).
Спасибо за прочтение этой статьи!