J'ai créé mon propre outil Instagram automatique [Ruby]

introduction

Je veux augmenter les abonnés Instagram. Mais je ne veux pas passer autant de temps. Les outils Instagram payants semblent chers ...

C'est pourquoi j'ai essayé de créer un programme qui puisse l'aimer automatiquement!

Personne cible

Environnement quand j'ai développé

version 
Ruby 2.6.3
gem 3.0.3
Homebrew 2.5.2 

Procédure de développement

Tout d'abord, installez le pilote sélénium.

sélénium est un outil d'automatisation de navigateur. Vous pouvez utiliser le navigateur automatiquement. Basé sur un script écrit en Ruby, Pyhon, etc., un JavaScript pour faire fonctionner le navigateur est généré, et le JavaScript est intégré dans la page cible pour faire fonctionner le navigateur.

Article de référence https://app.codegrid.net/entry/selenium-1

Installation du pilote sélénium

gem install selenium-webdriver 

Ensuite, installez chrome-driver. chrome-driver est un pilote (logiciel) requis pour faire fonctionner Google Chrome. Un pilote dédié est préparé pour chaque navigateur.

Installation du pilote chrome

brew install chrome-driver

Passez ensuite le chemin du pilote chrome.

$ echo export PATH=' ●●(:$PATH'  >> ~/ .bash_profile

Ensuite, mettez-le en œuvre.

Toute la source

insta_auto.rb


require 'selenium-webdriver'
require 'uri'

class InstagramBot
  attr_accessor :driver
  def initialize(username,password)
    
  end

  def good_hashtag(key_word,number)
   
  end

  def good_user_post(username,number)
   
  end

end
username = ""
password = ""
bot = InstagramBot.new(username,password)
key_word = ""
bot.good_hashtag(key_word,15)
# username = ""
# bot.good_user_post(username,15)

Fonction de connexion

insta_auto.rb


 def initialize(username,password)
    #Abréviation
    ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'
    puts "aaaaaaaaaaa"
    caps = Selenium::WebDriver::Remote::Capabilities.chrome('chromeOptions' => { args: ["--user-agent=#{ua}", 'window-size=1280x800', '--incognito'] }) #Mode secret
    puts "vbbbbbbb"
    client = Selenium::WebDriver::Remote::Http::Default.new
    client.read_timeout = 300
    @driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps, http_client: client
    @driver.manage.timeouts.implicit_wait = 30
    @driver.navigate.to'https://www.instagram.com/accounts/login/?source=auth_switcher'
    puts "ddddd"
    @driver.find_element(:name, 'username').send_keys(username)
    @driver.find_element(:name, 'password').send_keys(password)
    sleep 1
    @driver.find_element(:name, 'password').send_keys(:return)
  end

Comme la balise de hachage spécifiée

insta_auto.rb


def good_hashtag(key_word,number)
    encode_word = URI.encode(key_word)
    sleep 3
    @driver.navigate.to"https://www.instagram.com/explore/tags/#{encode_word}/"
    sleep 2
    @driver.execute_script("document.querySelectorAll('article img')[9].click()")
    sleep 2
    number.times{
      begin
        @driver.execute_script("console.log(document.querySelectorAll('button.wpO6b')[1].click())")
        sleep 2
      rescue
        puts "already good this post"
      end
      sleep 2
      @driver.execute_script("document.querySelector('a.coreSpriteRightPaginationArrow').click()")
      sleep 2
    }
  end

Ajouter une balise de hachage à l'utilisateur spécifié

insta_auto.rb


def good_user_post(username,number)
    sleep 3
    @driver.navigate.to"https://www.instagram.com/#{username}/"
    sleep 2
    @driver.execute_script("document.querySelectorAll('article img')[0].click()")
    sleep 2
    number.times{
      begin
        @driver.execute_script("document.querySelectorAll('span.glyphsSpriteHeart__outline__24__grey_9')[1].click()")
      rescue
        puts "already good this post"
      end
      sleep 2
      @driver.execute_script("document.querySelector('a.coreSpriteRightPaginationArrow').click()")
      sleep 2
    }
  end

Résumé

Il a fallu beaucoup de temps pour créer l'environnement de développement. D'un autre côté, il y avait de nombreux articles qui pouvaient être utiles pour écrire le code source, donc c'était utile sans trop d'efforts. C'est ma sensation de peau, mais je pense que de nombreux débutants en programmation disent: «J'étudie un langage dans une certaine mesure, mais quand il s'agit de créer un environnement, j'entre progressivement dans le domaine». Pour moi qui viens de sortir de l'école de programmation, c'était assez difficile de créer un environnement à partir de zéro lol Je dois parcourir pas mal d'articles et faire des essais et des erreurs. Alors cette fois, j'ai fait un "article qui systématise une série de flux" pour des gens comme moi! Je suis heureux que vous puissiez l'utiliser comme référence.

En outre, il se dit que si vous utilisez trop cette fonction de type automatique d'Instagram, votre compte pourrait être supprimé d'Instagram. Veuillez l'utiliser à vos risques et périls!

Article de référence:

https://qiita.com/nirs_kd56/items/6979a026497f2f4a59bf https://qiita.com/FJHoshi/items/c847ad51af388d2dbb4a https://qiita.com/y-agatsuma/items/ea2c9845ee0a931d5c9c

Recommended Posts

J'ai créé mon propre outil Instagram automatique [Ruby]
J'ai mis à jour mon propre blackjack réalisé avec Ruby pour mon portfolio
J'ai créé un outil de génération package.xml.
J'ai créé mon propre PC pour le deep learning. (Windows10, double démarrage Ubuntu18.04)
[Ruby] J'ai créé un simple client Ping
J'ai fait diverses fonctions de la séquence de Fibonacci (Ruby)
J'ai fait une mort risquée avec Ruby
J'ai créé un nouvel outil de déploiement Java
J'ai créé un outil Diff pour les fichiers Java
J'ai fait un blackjack avec Ruby (j'ai essayé d'utiliser minitest)
J'ai créé une bibliothèque d'extension Ruby en C
J'ai fait un portfolio avec Ruby On Rails