Gunakan waktu dengan benar: otomatisasi proses di Tinder


Saya pikir banyak orang suka berkenalan di sosial. jaringan dan menggunakan aplikasi (misalnya Tinder),
tetapi seringkali dibutuhkan banyak waktu untuk menyukai dan mengirim
pesan pertama . Saya percaya bahwa ini adalah tindakan monoton yang hanya mengusir
komunikasi dan kencan. Jika Anda seorang programmer, mengapa menjadi seperti orang lain, mari kita
mengotomatiskan proses tindakan monoton dengan saya dan meninggalkan perhatian kita hanya
untuk komunikasi yang menyenangkan, tetapi tentang segala sesuatu dalam urutan.

Latihan


Pada artikel ini, saya akan menggunakan browser Chrome .
  1. Buat folder dengan proyek bot_tinder .
  2. bot_tinder chromedriver_for_win chromedriver_for_mac, chromedriver_for_lin (.. 3 Windows, macOS, Linux).
  3. webdriver ( Chrome, Firefox ), .
  4. chromedriver_for_win, chromedriver_for_mac, chromedriver_for_lin.
    , , .. .
  5. Di folder bot_tinder, buat file bernama log.txt (kami menuliskan nomor telepon yang akan digunakan untuk Tinder). Format tanpa angka delapan: 9851234567
  6. Di folder bot_tinder, buat file tinder.py , function.py .

Akibatnya, Anda harus memiliki yang berikut ini:



Setiap folder harus berisi file webdriver yang diunduh sebelumnya.
Jika Anda menerapkannya hanya untuk OS Anda, maka file webdriver harus terletak di hanya satu folder dengan nama OS Anda "chromedriver_for_your OS " .

Penerapan


Di file tinder.py, impor perpustakaan:

# -*- coding: utf-8-*-
from selenium import webdriver


Di file function.py , impor pustaka:

from selenium.common.exceptions import NoSuchElementException, ElementNotInteractableException
from sys import platform
from time import sleep
import datetime

Selanjutnya, dalam file function.py , kita membuat variabel yang kita perlukan nanti:

error = ''
warning = ''
ok = ''
oc = ''
like = ''
all_sleep = 3
like_sleep = 2
Ikon-ikon itu dihapus oleh penerjemah Habr, tetapi harus seperti ini:



Anda dapat menyalin ikon dari situs atau menggunakan perpustakaan emoji .
Variabel all_sleep , like_sleep menunjukkan waktu tunda dalam detik.

Setelah kami membuat fungsi di file function.py :


  • Fungsi pertama akan menentukan tanggal dan waktu:
    def get_data_time():
        time_now = datetime.datetime.now()
        return time_now.strftime("%d-%m-%Y %H:%M")

  • Fungsi kedua akan menentukan OS Anda dan mengakses webdriver yang diinginkan :

    def get_OC():
        """
        Define OS.
        :return: OS information and path to chromedriver.exe
        """
        if platform == "linux" or platform == "linux2":
            time_now = datetime.datetime.now()
            information = "[" + get_data_time() + '] {}   Linux'.format(oc)
            put = "chromedriver_for_lin/** webdriver**"
            return information, put
    
        elif platform == "darwin":
            time_now = datetime.datetime.now()
            information = "[" + get_data_time() + '] {}   Mac'.format(oc)
            put = "chromedriver_for_mac/** webdriver**"
            return information, put
    
        elif platform == "win32":
            time_now = datetime.datetime.now()
            information = "[" + get_data_time() + '] {}   Windows'.format(oc)
            put = "chromedriver_for_win/chromedriver.exe"
            return information, put

    Ingatlah untuk menulis path ke webdriver dalam variabel put .

  • Fungsi ketiga akan membaca nomor telepon dari file log.txt :

    def information_from_txt_files():
        """
        Read the .txt files
        :return: Information. Login.
        """
        information = ''
        with open('log.txt', 'r') as file:
            log = file.read()
            information += "[" + get_data_time() + \
                           '] {}      Tinder: {}'.format(ok, log) 
        return information, log

  • Fungsi keempat akan menutup popup di situs web Tinder:

    def close_start_popups(browser):
        """
        Close the popup.
        :param browser: parameter of the running browser.
        :return: information.
        """
        sleep(all_sleep)
        try:
            browser.find_element_by_xpath('//button[@aria-label=""]').click()
            return "[" + get_data_time() + "] {}   .".format(ok)
        except ElementNotInteractableException as err:
            return "[" + get_data_time() + '] {} ' + err + ''.format(error)
        except NoSuchElementException as err:
            return "[" + get_data_time() + '] {}    .'.format(error)

  • Fungsi kelima akan menekan tombol "Masuk menggunakan nomor telepon" :

    def log_in_using_your_phone(browser):
        """
        Click the Login button using the phone number.
        :param browser: parameter of the running browser.
        :return: information
        """
        sleep(all_sleep)
        try:
            browser.find_element_by_xpath('//div[@id="modal-manager"]').find_element_by_xpath('//button[@aria-label="    "]').click()
            return "[" + get_data_time() + "] {}     .".format(ok)
        except ElementNotInteractableException as err:
            return "[" + get_data_time() + '] {} ' + err + ''.format(error)
        except NoSuchElementException as err:
            browser.find_element_by_xpath('//button[text()=" "]').click()
            return log_in_using_your_phone(browser)

  • Fungsi keenam akan memasukkan nomor telepon:

    def input_number_phone(browser, log):
        """
        Enter the phone number.
        :param browser: parameter of the running browser.
        :param log: phone number.
        :return: information.
        """
        sleep(all_sleep)
        try:
            browser.find_element_by_name('phone_number').send_keys(log)
            return "[" + get_data_time() + '] {}    {}'.format(ok, log)
        except NoSuchElementException:
            return "[" + get_data_time() + '] {}      .'.format(error)

  • Fungsi ketujuh menekan tombol Lanjutkan :

    def go_on(browser):
        """
        Click the Continue button.
        :param browser: parameter of the running browser.
        :return: information
        """
        sleep(all_sleep)
        try:
            browser.find_element_by_xpath('//span[text()=""]').click()
            return "[" + get_data_time() + '] {}   '.format(ok)
        except NoSuchElementException:
            return "[" + get_data_time() + '] {}    .'.format(error)

  • Fungsi kedelapan meminta Anda untuk memasukkan kode yang akan datang ke ponsel Anda:

    def code_check():
        """
        Entering a code and checking the entered code.
        :return: entered code
        """
        kod_numbers = input("[" + get_data_time() + "] {}  : ".format(warning))
        if len(kod_numbers) != 6:
            print("[" + get_data_time() + '] {}   .'.format(error))
            return code_check()
        else:
            print("[" + get_data_time() + '] {}   .'.format(ok))
            return kod_numbers

    Fungsi ini juga memeriksa jumlah digit yang dimasukkan.
  • Fungsi kesembilan memasuki kode:

    def input_cod(browser):
        """
        Code entry.
        :param browser: parameter of the running browser.
        :return: information.
        """
        try:
            kod_numbers = code_check()
            kod = browser.find_elements_by_xpath('//input[@type="tel"]')
            n = 0
            for i in kod:
                i.send_keys(kod_numbers[n])
                n += 1
            return "[" + get_data_time() + '] {}  .'.format(ok)
        except NoSuchElementException:
            return "[" + get_data_time() + '] {}      .'.format(error)

  • Fungsi kesepuluh memungkinkan definisi geolokasi:

    def geolocation_ok(browser):
        """
        We allow geolocation.
        :param browser: parameter of the running browser.
        :return: information.
        """
        sleep(all_sleep)
        try:
            browser_button = browser.find_elements_by_tag_name("button")
            button_list = {i.text: i for i in browser_button}
            if "" in button_list.keys():
                button = [value for key, value in button_list.items() if key == ""]
                button[0].click()
                return "[" + get_data_time() + '] {}  .'.format(ok)
            else:
                return "[" + get_data_time() + '] {}      .'.format(error)
        except NoSuchElementException:
            return "[" + get_data_time() + '] {}      .'.format(error)

  • Fungsi kesebelas mematikan peringatan:

    def notice_off(browser):
        """
        Turn off notifications.
        :param browser: parameter of the running browser.
        :return: information.
        """
        sleep(all_sleep)
        try:
            browser_button = browser.find_elements_by_tag_name("button")
            button_list = {i.text: i for i in browser_button}
            if "" in button_list.keys():
                button = [value for key, value in button_list.items() if key == ""]
                button[0].click()
                return "[" + get_data_time() + '] {}  .'.format(ok)
            else:
                return "[" + get_data_time() + '] {}      .'.format(error)
        except NoSuchElementException:
            return "[" + get_data_time() + '] {}      .'.format(error)

  • Fungsi kedua belas menutup pop-up:

    def popup_windows_off(browser):
        """
        Close popups.
        :param browser: parameter of the running browser
        :return: information
        """
        sleep(like_sleep)
        try:
            browser_button = browser.find_elements_by_tag_name("button")
            button_list = {i.text: i for i in browser_button}
            if "" in button_list.keys():
                button = [value for key, value in button_list.items() if key == ""]
                button[0].click()
                print("[" + get_data_time() + '] {}  .'.format(ok))
        except NoSuchElementException:
            pass

  • Fungsi ketiga belas menempatkan Seperti:

    def click_like(browser):
        """
        Click LIKE.
        :param browser: parameter of the running browser
        :return: information
        """
        sum_like = 0
        while True:
            try:
                popup_windows_off(browser)
                browser.find_element_by_xpath('//button[@aria-label=""]').click()
                sum_like += 1
                print("[" + get_data_time() + '] {} - {}'.format(like, str(sum_like)))
            except NoSuchElementException:
                print("[" + get_data_time() + '] {}    .'.format(error))


Sekarang buka file tinder.py dan daftarkan impor semua fungsi:

from function import get_OC, information_from_txt_files, close_start_popups, notice_off, click_like, log_in_using_your_phone, input_number_phone, go_on, input_cod, geolocation_ok

Tentukan OS:
#  
info, put = get_OC()
print(info)

Setel opsi peramban:

#    chrome
chromedriver = put
options = webdriver.ChromeOptions()
options.add_argument('--start-minimize')
browser = webdriver.Chrome(executable_path=chromedriver, chrome_options=options)

Jika Anda bekerja dengan Firefox, bacalah cara menggunakannya menggunakan perpustakaan selenium.webdriver .

Browser terbuka dan menuju ke halaman Tinder:

#        
browser.get('https://tinder.com/app/recs')

Sekarang kita mulai menggunakan fungsi yang disiapkan sebelumnya:

#  txt   
info_txt, log = information_from_txt_files()
print(info_txt)
#     
print(close_start_popups(browser))
#     
print(log_in_using_your_phone(browser))
#   
print(input_number_phone(browser, log))
#   
print(go_on(browser))
#  
print(input_cod(browser))
#   
print(go_on(browser))
#     
print(geolocation_ok(browser))
#   
print(notice_off(browser))
#  
click_like(browser)

Kesimpulan


Pada akhirnya, dapatkan bot yang masuk ke situs web Tinder dan klik Suka.

Anda hanya perlu masuk ke aplikasi dalam beberapa jam dan mulai berbicara dengan
simpati yang sudah saling menguntungkan .
Otomasi adalah upaya pria untuk menyederhanakan pekerjaan sehingga wanita bisa melakukannya.
Pada artikel selanjutnya, kami akan menerapkan kemampuan untuk mengirim pesan untuk suka bersama.

All Articles