Comment créer un robot Instagram avec Python et InstaPy – Real Python

By | avril 6, 2020

Formation Python

Qu'ont en commun SocialCaptain, Kicksta, Instavast et de nombreuses autres sociétés? Ils vous aident tous à atteindre un public plus large, à gagner plus de followers et à obtenir plus de likes sur Instagram tout en levant à peine le petit doigt. Ils le font tout par l'automatisation, et les gens leur paient beaucoup d'argent pour cela. Mais vous pouvez faire la même chose – gratuitement – en utilisant InstaPy!

Dans ce didacticiel, vous apprendrez à créer un bot avec Python et InstaPy, qui automatise vos activités Instagram pour gagner plus de followers et de likes avec un minimum de saisie manuelle. En cours de route, vous découvrirez l’automatisation du navigateur avec Selenium et le Modèle d'objet de page, qui constituent ensemble la base d'InstaPy.

Dans ce didacticiel, vous apprendrez:

  • Comment Les bots Instagram travail
  • Comment automatiser un navigateur avec Selenium
  • Comment utiliser le Modèle d'objet de page pour une meilleure lisibilité et testabilité
  • Comment construire un bot Instagram avec InstaPy

Vous commencerez par apprendre comment fonctionnent les robots Instagram avant d'en créer un.

Comment les robots Instagram fonctionnent

Comment un script d'automatisation peut-il gagner plus de followers et de likes? Avant de répondre à cette question, réfléchissez à la façon dont une personne réelle gagne plus de followers et de likes.

Ils le font en étant constamment actifs sur la plate-forme. Ils publient souvent, suivent d'autres personnes, aiment et laissent des commentaires sur les publications d'autres personnes. Les bots fonctionnent exactement de la même manière: ils suivent, aiment et commentent de manière cohérente en fonction des critères que vous définissez.

Mieux les critères que vous définissez, meilleurs seront vos résultats. Vous voulez vous assurer que vous ciblez les bons groupes, car les personnes avec lesquelles votre robot interagit sur Instagram seront plus susceptibles d'interagir avec votre contenu.

Par exemple, si vous vendez des vêtements pour femmes sur Instagram, vous pouvez demander à votre robot d'aimer, de commenter et de suivre principalement des femmes ou des profils dont les publications incluent des hashtags tels que #beauté, #mode, ou #vêtements. Cela rend plus probable que votre public cible remarquera votre profil, vous suivra et commencera à interagir avec vos messages.

Mais comment ça marche sur le plan technique? Vous ne pouvez pas utiliser l'API Instagram Developer car elle est assez limitée à cet effet. Entrer automatisation du navigateur. Cela fonctionne de la manière suivante:

  1. Vous lui servez vos informations d'identification.
  2. Vous définissez les critères pour qui suivre, quels commentaires laisser et quel type de messages à aimer.
  3. Votre bot ouvre un navigateur, saisit https://instagram.com dans la barre d'adresse, connectez-vous avec vos informations d'identification et commencez à faire les choses que vous lui avez demandé de faire.

Ensuite, vous allez créer la version initiale de votre bot Instagram, qui se connectera automatiquement à votre profil. Notez que vous n'utiliserez pas InstaPy pour l'instant.

Comment automatiser un navigateur

Pour cette version de votre robot Instagram, vous utiliserez Selenium, l'outil qu'InstaPy utilise sous le capot.

Tout d'abord, installez Selenium. Lors de l'installation, assurez-vous d'installer également Firefox WebDriver car la dernière version d'InstaPy a supprimé la prise en charge de Chrome. Cela signifie également que vous devez installer le navigateur Firefox sur votre ordinateur.

Maintenant, créez un fichier Python et écrivez-y le code suivant:

    1 de temps importation dormir
    2 de sélénium importation pilote Web
    3 
    4 navigateur = pilote Web.Firefox()
    5 
    6 navigateur.avoir(«https://www.instagram.com/»)
    sept 
    8 dormir(5)
    9 
dix navigateur.Fermer()

Exécutez le code et vous verrez qu'un navigateur Firefox s'ouvre et vous dirige vers la page de connexion Instagram. Voici une ventilation ligne par ligne du code:

  • Lignes 1 et 2 importation dormir et pilote Web.
  • Ligne 4 initialise le pilote Firefox et le définit sur navigateur.
  • Ligne 6 les types https://www.instagram.com/ sur la barre d'adresse et frappe Entrer.
  • Ligne 8 attend cinq secondes pour que vous puissiez voir le résultat. Sinon, cela fermerait le navigateur instantanément.
  • Ligne 10 ferme le navigateur.

Ceci est la version Selenium de Bonjour le monde. Vous êtes maintenant prêt à ajouter le code qui vous connecte à votre profil Instagram. Mais d'abord, réfléchissez à la façon dont vous vous connecteriez manuellement à votre profil. Vous feriez ce qui suit:

  1. Aller à https://www.instagram.com/.
  2. Cliquez sur le lien de connexion.
  3. Entrez vos informations d'identification.
  4. Appuyez sur le bouton de connexion.

La première étape est déjà effectuée par le code ci-dessus. Maintenant, changez-le pour qu'il clique sur le lien de connexion sur la page d'accueil Instagram:

    1 de temps importation dormir
    2 de sélénium importation pilote Web
    3 
    4 navigateur = pilote Web.Firefox()
    5 navigateur.implicitement_attendre(5)
    6 
    sept navigateur.avoir(«https://www.instagram.com/»)
    8 
    9 login_link = navigateur.find_element_by_xpath("//une[text()='Log in']")
dix login_link.Cliquez sur()
11 
12 dormir(5)
13 
14 navigateur.Fermer()

Notez les lignes en surbrillance:

Exécutez le script et vous verrez votre script en action. Il ouvrira le navigateur, accédera à Instagram et cliquez sur le lien de connexion pour accéder à la page de connexion.

Sur la page de connexion, il y a trois éléments importants:

  1. L'entrée du nom d'utilisateur
  2. La saisie du mot de passe
  3. Le bouton de connexion

Ensuite, modifiez le script afin qu'il trouve ces éléments, saisisse vos informations d'identification et clique sur le bouton de connexion:

    1 de temps importation dormir
    2 de sélénium importation pilote Web
    3 
    4 navigateur = pilote Web.Firefox()
    5 navigateur.implicitement_attendre(5)
    6 
    sept navigateur.avoir(«https://www.instagram.com/»)
    8 
    9 login_link = navigateur.find_element_by_xpath("//une[text()='Log in']")
dix login_link.Cliquez sur()
11 
12 dormir(2)
13 
14 username_input = navigateur.find_element_by_css_selector("contribution[name='username']")
15 password_input = navigateur.find_element_by_css_selector("contribution[name='password']")
16 
17 username_input.send_keys("")
18 password_input.send_keys("")
19 
20 login_button = navigateur.find_element_by_xpath("//bouton[@type='submit']")
21 login_button.Cliquez sur()
22 
23 dormir(5)
24 
25 navigateur.Fermer()

Voici une ventilation des modifications:

  1. Ligne 12 dort pendant deux secondes pour permettre à la page de se charger.
  2. Lignes 14 et 15 trouver les entrées de nom d'utilisateur et de mot de passe par CSS. Vous pouvez utiliser toute autre méthode que vous préférez.
  3. Lignes 17 et 18 saisissez votre nom d'utilisateur et votre mot de passe dans leurs entrées respectives. N'oubliez pas de remplir et !
  4. Ligne 20 trouve le bouton de connexion par XPath.
  5. Ligne 21 clique sur le bouton de connexion.

Exécutez le script et vous serez automatiquement connecté à votre profil Instagram.

Vous êtes bien parti avec votre robot Instagram. Si vous deviez continuer à écrire ce script, le reste serait très similaire. Vous trouverez les articles que vous aimez en faisant défiler votre flux, trouvez le bouton J'aime par CSS, cliquez dessus, trouvez la section des commentaires, laissez un commentaire et continuez.

La bonne nouvelle est que toutes ces étapes peuvent être gérées par InstaPy. Mais avant de vous lancer dans l'utilisation d'Instapy, il y a une autre chose que vous devez savoir pour mieux comprendre comment InstaPy fonctionne: le Modèle d'objet de page.

Comment utiliser le modèle d'objet de page

Maintenant que vous avez écrit le code de connexion, comment écririez-vous un test pour celui-ci? Cela ressemblerait à quelque chose comme ceci:

def test_login_page(navigateur):
    navigateur.avoir(«https://www.instagram.com/accounts/login/»)
    username_input = navigateur.find_element_by_css_selector("contribution[name='username']")
    password_input = navigateur.find_element_by_css_selector("contribution[name='password']")
    username_input.send_keys("")
    password_input.send_keys("")
    login_button = navigateur.find_element_by_xpath("//bouton[@type='submit']")
    login_button.Cliquez sur()

    les erreurs = navigateur.find_elements_by_css_selector('#Message d'erreur')
    affirmer len(les erreurs) == 0

Pouvez-vous voir ce qui ne va pas avec ce code? Il ne suit pas le principe DRY. Autrement dit, le code est dupliqué à la fois dans l'application et dans le code de test.

La duplication de code est particulièrement mauvaise dans ce contexte car le code Selenium dépend des éléments d'interface utilisateur et les éléments d'interface utilisateur ont tendance à changer. Quand ils changent, vous souhaitez mettre à jour votre code en un seul endroit. C’est là que le modèle d’objet de page entre en jeu.

Avec ce motif, vous créez classes d'objets de page pour les pages ou fragments les plus importants qui fournissent des interfaces faciles à programmer et qui masquent les widgets sous-jacents dans la fenêtre. Dans cet esprit, vous pouvez réécrire le code ci-dessus et créer un HomePage classe et un Page de connexion classe:

de temps importation dormir

classe Page de connexion:
    def __init__(soi, navigateur):
        soi.navigateur = navigateur

    def s'identifier(soi, Nom d'utilisateur, mot de passe):
        username_input = soi.navigateur.find_element_by_css_selector("contribution[name='username']")
        password_input = soi.navigateur.find_element_by_css_selector("contribution[name='password']")
        username_input.send_keys(Nom d'utilisateur)
        password_input.send_keys(mot de passe)
        login_button = navigateur.find_element_by_xpath("//bouton[@type='submit']")
        login_button.Cliquez sur()
        dormir(5)

classe HomePage:
    def __init__(soi, navigateur):
        soi.navigateur = navigateur
        soi.navigateur.avoir(«https://www.instagram.com/»)

    def go_to_login_page(soi):
        soi.navigateur.find_element_by_xpath("//une[text()='Log in']").Cliquez sur()
        dormir(2)
        revenir Page de connexion(soi.navigateur)

Le code est le même sauf que la page d'accueil et la page de connexion sont représentées comme des classes. Les classes encapsulent les mécanismes nécessaires pour rechercher et manipuler les données dans l'interface utilisateur. Autrement dit, il existe des méthodes et des accesseurs qui permettent au logiciel de faire tout ce qu'un humain peut faire.

Une autre chose à noter est que lorsque vous accédez à une autre page à l'aide d'un objet page, il renvoie un objet page pour la nouvelle page. Notez la valeur retournée de go_to_log_in_page (). Si vous aviez un autre cours appelé FeedPage, puis s'identifier() du Page de connexion classe retournerait une instance de cela: return FeedPage ().

Voici comment utiliser le modèle d'objet de page:

de sélénium importation pilote Web

navigateur = pilote Web.Firefox()
navigateur.implicitement_attendre(5)

home_page = HomePage(navigateur)
page de connexion = home_page.go_to_login_page()
page de connexion.s'identifier("", "")

navigateur.Fermer()

Il semble beaucoup mieux, et le test ci-dessus peut maintenant être réécrit pour ressembler à ceci:

def test_login_page(navigateur):
    home_page = HomePage(navigateur)
    page de connexion = home_page.go_to_login_page()
    page de connexion.s'identifier("", "")

    les erreurs = navigateur.find_elements_by_css_selector('#Message d'erreur')
    affirmer len(les erreurs) == 0

Avec ces modifications, vous n'aurez pas à toucher à vos tests si quelque chose change dans l'interface utilisateur.

Pour plus d'informations sur le modèle d'objet de page, reportez-vous à la documentation officielle et à l'article de Martin Fowler.

Maintenant que vous connaissez à la fois le sélénium et le modèle d'objet de page, vous vous sentirez comme chez vous avec InstaPy. Vous allez ensuite créer un bot de base avec.

Comment construire un robot Instagram avec InstaPy

Dans cette section, vous utiliserez InstaPy pour créer un robot Instagram qui aimera, suivra et commentera automatiquement les différentes publications. Tout d'abord, vous devrez installer InstaPy:

$ installez python3 -m pip instapy

Cela va installer instapy dans votre système.

Caractéristiques essentielles

Vous pouvez maintenant réécrire le code ci-dessus avec InstaPy afin de pouvoir comparer les deux options. Créez d'abord un autre fichier Python et insérez-y le code suivant:

de instapy importation InstaPy

InstaPy(Nom d'utilisateur="", mot de passe="").s'identifier()

Remplacez le nom d'utilisateur et le mot de passe par le vôtre, exécutez le script, et voilà! Avec juste une ligne de code, vous avez atteint le même résultat.

Même si vos résultats sont les mêmes, vous pouvez voir que le comportement n'est pas exactement le même. En plus de simplement vous connecter à votre profil, InstaPy fait d'autres choses, telles que la vérification de votre connexion Internet et le statut des serveurs Instagram. Cela peut être observé directement sur le navigateur ou dans les journaux:

INFO [2019-12-17 22:03:19] [username]        - Liste de contrôle de connexion [1/3] (État de la connexion Internet)
INFO [2019-12-17 22:03:20] [username]        - État de la connexion Internet: ok
INFO [2019-12-17 22:03:20] [username]        - L'IP actuelle est "17.283.46.379" et vient de "Allemagne / DE"
INFO [2019-12-17 22:03:20] [username]        - Liste de contrôle de connexion [2/3] (Statut du serveur Instagram)
INFO [2019-12-17 22:03:26] [username]        - Statut du site Web Instagram: actuellement en place

Assez bien pour une ligne de code, n'est-ce pas? Il est maintenant temps de faire en sorte que le script fasse des choses plus intéressantes que de se connecter.

Dans le cadre de cet exemple, supposons que votre profil concerne les voitures et que votre bot est destiné à interagir avec les profils de personnes qui s'intéressent également aux voitures.

Tout d'abord, vous pouvez aimer certains messages balisés #BMW ou #mercedes en utilisant like_by_tags ():

    1 de instapy importation InstaPy
    2 
    3 session = InstaPy(Nom d'utilisateur="", mot de passe="")
    4 session.s'identifier()
    5 session.like_by_tags([[[["BMW", "mercedes"], montant=5)

Ici, vous avez donné à la méthode une liste de balises à aimer et le nombre de publications à aimer pour chaque balise donnée. Dans ce cas, vous lui avez demandé d'aimer dix publications, cinq pour chacune des deux balises. Mais regardez ce qui se passe après avoir exécuté le script:

INFO [2019-12-17 22:15:58] [username]        Étiquette [1/2]
INFO [2019-12-17 22:15:58] [username]        -> b'bmw '
INFO [2019-12-17 22:16:07] [username]        montant souhaité: 14 | meilleurs messages [disabled]: 9 | messages possibles: 43726739
INFO [2019-12-17 22:16:13] [username]        Comme# [1/14]
INFO [2019-12-17 22:16:13] [username]        https://www.instagram.com/p/B6MCcGcC3tU/
INFO [2019-12-17 22:16:15] [username]        Image de: b'mattyproduction '
INFO [2019-12-17 22:16:15] [username]        Lien: b'https: //www.instagram.com/p/B6MCcGcC3tU/ '
INFO [2019-12-17 22:16:15] [username]        Description: b'Mal etwas anderes  xf0  x9f  x91  x80  xe2  x98  xba  xef  xb8  x8f Bald ist das komplette Video auf YouTube zu finden (n  xc3  xa4here Infos werden folgen). Vielen Dank an @patrick_jwki @thehuthlife und @christic_ f  xc3  xbcr das bereitstellen der Autos  xf0  x9f  x94  xa5  xf0  x9f  x98  x8d # carporn # cars # tuning # bagged # bmw # m2 # m2compet focusrs # ford # mk3 # e92 # m3 # panasonic # cinematic # gh5s # dji # roninm # adobe # videography # music # bimmer # fordperformance # night # shooting # '
INFO [2019-12-17 22:16:15] [username]        Emplacement: b'K  xc3  xb6ln, Allemagne '
INFO [2019-12-17 22:16:51] [username]        -> Image aimée!
INFO [2019-12-17 22:16:56] [username]        -> Non commenté
INFO [2019-12-17 22:16:57] [username]        -> Ne pas suivre
INFO [2019-12-17 22:16:58] [username]        Comme# [2/14]
INFO [2019-12-17 22:16:58] [username]        https://www.instagram.com/p/B6MDK1wJ-Kb/
INFO [2019-12-17 22:17:01] [username]        Image de: b'davs0 '
INFO [2019-12-17 22:17:01] [username]        Lien: b'https: //www.instagram.com/p/B6MDK1wJ-Kb/ '
INFO [2019-12-17 22:17:01] [username]        Description: b'Someone a dit le cloud?  xf0  x9f  xa4  x94  xf0  x9f  xa4  xad  xf0  x9f  x98  x88  xe2  x80  xa2  n  xe2  x80  xa2  n  xe2  x80  xa2  n  xe2  x80  xa2  n # bmw #bmwrepost # bmwm4 # bmwm4gts # f82 #bmwmrepost #bmwmsport #bmwmperformance #bmwmpower # bmwm4cs #austinyellow # davs0 #mpower_official #bmw_world_uabwmwwmww # m5f90 # m4f82 #bmwmafia #bmwcrew #bmwlifestyle '
INFO [2019-12-17 22:17:34] [username]        -> Image aimée!
INFO [2019-12-17 22:17:37] [username]        -> Non commenté
INFO [2019-12-17 22:17:38] [username]        -> Ne pas suivre

Par défaut, InstaPy aimera les neuf premiers messages en plus de votre montant valeur. Dans ce cas, cela porte le nombre total de likes par tag à quatorze (neuf premiers messages plus les cinq que vous avez spécifiés dans montant).

Notez également qu'InstaPy enregistre chaque action qu'il entreprend. Comme vous pouvez le voir ci-dessus, il mentionne le post qu'il a aimé ainsi que son lien, sa description, son emplacement et si le bot a commenté le post ou suivi l'auteur.

Vous avez peut-être remarqué qu'il y a des retards après presque chaque action. C'est par conception. Cela empêche votre profil d'être banni sur Instagram.

Maintenant, vous ne voulez probablement pas que votre robot aime les messages inappropriés. Pour éviter que cela ne se produise, vous pouvez utiliser set_dont_like ():

de instapy importation InstaPy

session = InstaPy(Nom d'utilisateur="", mot de passe="")
session.s'identifier()
session.like_by_tags([[[["BMW", "mercedes"], montant=5)
session.set_dont_like([[[["nu", "nsfw"])

Avec ce changement, les messages qui contiennent les mots nu ou nsfw dans leurs descriptions ne sera pas aimé. Vous pouvez signaler tout autre mot que vous souhaitez éviter pour votre bot.

Ensuite, vous pouvez dire au bot non seulement d'aimer les publications, mais également de suivre certains des auteurs de ces publications. Vous pouvez le faire avec set_do_follow ():

de instapy importation InstaPy

session = InstaPy(Nom d'utilisateur="", mot de passe="")
session.s'identifier()
session.like_by_tags([[[["BMW", "mercedes"], montant=5)
session.set_dont_like([[[["nu", "nsfw"])
session.set_do_follow(Vrai, pourcentage=50)

Si vous exécutez le script maintenant, le bot suivra cinquante pour cent des utilisateurs dont il a aimé les publications. Comme d'habitude, chaque action sera enregistrée.

Vous pouvez également laisser quelques commentaires sur les articles. Il y a deux choses que vous devez faire. Tout d'abord, activez les commentaires avec set_do_comment ():

de instapy importation InstaPy

session = InstaPy(Nom d'utilisateur="", mot de passe="")
session.s'identifier()
session.like_by_tags([[[["BMW", "mercedes"], montant=5)
session.set_dont_like([[[["nu", "nsfw"])
session.set_do_follow(Vrai, pourcentage=50)
session.set_do_comment(Vrai, pourcentage=50)

Ensuite, dites au bot quels commentaires laisser set_comments ():

de instapy importation InstaPy

session = InstaPy(Nom d'utilisateur="", mot de passe="")
session.s'identifier()
session.like_by_tags([[[["BMW", "mercedes"], montant=5)
session.set_dont_like([[[["nu", "nsfw"])
session.set_do_follow(Vrai, pourcentage=50)
session.set_do_comment(Vrai, pourcentage=50)
session.set_comments([[[["Agréable!", "Sucré!", "Beautiful: heart_eyes:"])

Exécutez le script et le bot laissera l'un de ces trois commentaires sur la moitié des messages avec lesquels il interagit.

Maintenant que vous avez terminé avec les paramètres de base, c'est une bonne idée de terminer la session avec fin():

de instapy importation InstaPy

session = InstaPy(Nom d'utilisateur="", mot de passe="")
session.s'identifier()
session.like_by_tags([[[["BMW", "mercedes"], montant=5)
session.set_dont_like([[[["nu", "nsfw"])
session.set_do_follow(Vrai, pourcentage=50)
session.set_do_comment(Vrai, pourcentage=50)
session.set_comments([[[["Agréable!", "Sucré!", "Beautiful: heart_eyes:"])
session.fin()

Cela fermera le navigateur, enregistrera les journaux et préparera un rapport que vous pourrez voir dans la sortie de la console.

Fonctionnalités supplémentaires dans InstaPy

InstaPy est un projet de taille qui possède de nombreuses fonctionnalités bien documentées. La bonne nouvelle est que si vous vous sentez à l'aise avec les fonctionnalités que vous avez utilisées ci-dessus, le reste devrait être assez similaire. Cette section décrira certaines des fonctionnalités les plus utiles d'InstaPy.

Superviseur des quotas

Vous ne pouvez pas gratter Instagram toute la journée, tous les jours. Le service remarquera rapidement que vous exécutez un bot et interdira certaines de ses actions. C'est pourquoi c'est une bonne idée de fixer des quotas sur certaines actions de votre bot. Prenez l'exemple suivant:

session.set_quota_supervisor(activée=Vrai, peak_comments_daily=240, peak_comments_hourly=21)

Le bot continuera de commenter jusqu'à ce qu'il atteigne ses limites horaires et quotidiennes. Il reprendra ses commentaires une fois la période de quota écoulée.

Navigateur sans tête

Cette fonctionnalité vous permet d'exécuter votre bot sans l'interface graphique du navigateur. C'est super utile si vous souhaitez déployer votre bot sur un serveur où vous n'avez peut-être pas ou n'avez pas besoin de l'interface graphique. Il est également moins gourmand en ressources processeur, ce qui améliore les performances. Vous pouvez l'utiliser comme ceci:

session = InstaPy(Nom d'utilisateur='tester', mot de passe='tester', headless_browser=Vrai)

Notez que vous définissez cet indicateur lorsque vous initialisez le InstaPy objet.

Utiliser l'IA pour analyser les publications

Plus tôt, vous avez vu comment ignorer les messages contenant des mots inappropriés dans leurs descriptions. Et si la description est bonne mais que l'image elle-même est inappropriée? Vous pouvez intégrer votre bot InstaPy avec ClarifAI, qui propose des services de reconnaissance d'images et de vidéos:

session.set_use_clarifai(activée=Vrai, clé API="")
session.clarifai_check_img_for([[[[«nsfw»])

Désormais, votre robot n'aimera ni ne commentera aucune image que ClarifAI considère comme NSFW. Vous recevez 5000 appels API gratuits par mois.

Limites de la relation

C'est souvent une perte de temps d'interagir avec les publications de personnes qui ont beaucoup d'adeptes. Dans de tels cas, c'est une bonne idée de définir des limites de relation afin que votre bot ne gaspille pas vos précieuses ressources informatiques:

session.set_relationship_bounds(activée=Vrai, max_followers=8500)

Avec cela, votre bot n'interagira pas avec les publications des utilisateurs qui comptent plus de 8 500 abonnés.

Pour de nombreuses autres fonctionnalités et configurations dans InstaPy, consultez la documentation.

Conclusion

InstaPy vous permet d'automatiser vos activités Instagram avec un minimum d'efforts et d'efforts. C'est un outil très flexible avec de nombreuses fonctionnalités utiles.

Dans ce didacticiel, vous avez appris:

  • Comment Les bots Instagram travail
  • Comment automatiser un navigateur avec Sélénium
  • Comment utiliser le Modèle d'objet de page pour rendre votre code plus maintenable et testable
  • Comment utiliser InstaPy construire un bot Instagram de base

Lisez la documentation InstaPy et expérimentez un peu avec votre bot. Bientôt, vous commencerez à obtenir de nouveaux followers et likes avec un minimum d'efforts. J'ai moi-même gagné quelques nouveaux abonnés en écrivant ce tutoriel.

Si vous souhaitez demander ou partager quelque chose, veuillez nous contacter dans les commentaires ci-dessous.



[ad_2]