рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рд╕рд╛рдорд╛рдЬрд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдЙрдкрдпреЛрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЯрд┐рдВрдбрд░),рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рдкрд╣рд▓реЗрд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрд╕рдВрдж рдХрд░рдиреЗ рдФрд░ рднреЗрдЬрдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ ред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпреЗ рдиреАрд░рд╕ рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓рд╕рдВрдЪрд╛рд░ рдФрд░ рдбреЗрдЯрд┐рдВрдЧ рдХреЛ рдкреАрдЫреЗ рдЫреЛрдбрд╝рддреА рд╣реИрдВ ред рдпрджрд┐ рдЖрдк рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВ, рддреЛ рд╣рд░ рдХрд┐рд╕реА рдХреА рддрд░рд╣ рдХреНрдпреЛрдВ рд╣реИрдВ, рдЖрдЗрдПрдореЗрд░реЗ рд╕рд╛рде рдиреАрд░рд╕ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЕрдкрдирд╛ рдзреНрдпрд╛рди рдХреЗрд╡рд▓рд╕реБрдЦрдж рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗрдВ , рд▓реЗрдХрд┐рди рдХреНрд░рдо рдореЗрдВ рд╕рдм рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВредрдкреНрд░рд╢рд┐рдХреНрд╖рдг
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдХреНрд░реЛрдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ ред
- Bot_tinder рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБ ред
- bot_tinder chromedriver_for_win chromedriver_for_mac, chromedriver_for_lin (.. 3 Windows, macOS, Linux).
- webdriver ( Chrome, Firefox ), .
- chromedriver_for_win, chromedriver_for_mac, chromedriver_for_lin.
, , .. .
- Bot_tinder рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ , log.txt рдирд╛рдордХ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ (рд╣рдо рдЙрд╕ рдлрд╝реЛрди рдирдВрдмрд░ рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рд╡рд╣ Tinder рдкрд░ рдЬрд╛рдПрдЧрд╛)ред рдПрдХ рдЖрдВрдХрдбрд╝рд╛ рдЖрда рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рд╛рд░реВрдк: 9851234567
- Bot_tinder рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ , tinder.py , function.py files рдмрдирд╛рдПрдВ ред
рдирддреАрдЬрддрди, рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд
рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП : рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрд╣рд▓реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдлрд╝рд╛рдЗрд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП редрдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ OS рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдлрд╝рд╛рдЗрд▓ рдХреЗрд╡рд▓ рдЖрдкрдХреЗ OS "Chromedriver_for_your OS " рдХреЗ рдирд╛рдо рд╡рд╛рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП ред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
Tinder.py
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ , рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдпрд╛рдд рдХрд░реЗрдВ:
from selenium import webdriver
Function.py
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдВ:from selenium.common.exceptions import NoSuchElementException, ElementNotInteractableException
from sys import platform
from time import sleep
import datetime
рдЕрдЧрд▓рд╛, function.py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╣рдо рд╡реЗ рдЪрд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:error = ''
warning = ''
ok = ''
oc = ''
like = ''
all_sleep = 3
like_sleep = 2
рдЖрдЗрдХрди рдХреЛ рд╣реЗрдмрд░ рджреБрднрд╛рд╖рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
рдЖрдк рд╕рд╛рдЗрдЯ рд╕реЗ рдЖрдЗрдХрди рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЗрдореЛрдЬреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ редрдЪрд░ all_sleep , like_sleep рд╕реЗрдХрдВрдб рдореЗрдВ рджреЗрд░реА рдХрд╛ рд╕рдордп рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВредрдмрд╛рдж рд╣рдо рдХрд╛рд░реНрдпреЛрдВ рдмрдирд╛рдиреЗ рдореЗрдВ function.py рдлрд╝рд╛рдЗрд▓ :
рдкрд╣рд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рджрд┐рдирд╛рдВрдХ рдФрд░ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛:
def get_data_time():
time_now = datetime.datetime.now()
return time_now.strftime("%d-%m-%Y %H:%M")
- рджреВрд╕рд░рд╛ рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЗ рдУрдПрд╕ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ :
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
рдкреБрдЯ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд▓рд┐рдЦрдирд╛ рдпрд╛рдж рд░рдЦреЗрдВ ред
- рддреАрд╕рд░рд╛ рдлрд╝рдВрдХреНрд╢рди 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
- рдЪреМрдерд╛ рдХрд╛рд░реНрдп рдЯрд┐рдВрдбрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкреЙрдкрдЕрдк рдХреЛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛:
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)
- рдкрд╛рдБрдЪрд╡рд╛рдБ рдлрд╝рдВрдХреНрд╢рди "рдлрд╝реЛрди рдирдВрдмрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВ " рдмрдЯрди рджрдмрд╛рдПрдЧрд╛ :
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)
- рдЫрдард╛ рдлрд╝рдВрдХреНрд╢рди рдлрд╝реЛрди рдирдВрдмрд░ рджрд░реНрдЬ рдХрд░реЗрдЧрд╛:
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)
- рд╕рд╛рддрд╡реЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЬрд╛рд░реА рд░рдЦреЗрдВ рдмрдЯрди рджрдмрд╛рдПрдВ :
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)
- рдЖрдард╡рд╛рдВ рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЛ рдЙрд╕ рдХреЛрдб рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдлреЛрди рдкрд░ рдЖрдПрдЧрд╛:
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
рдлрд╝рдВрдХреНрд╢рди рднреА рджрд░реНрдЬ рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред
- рдиреМрд╡рд╛рдВ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ:
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)
- рджрд╕рд╡рд╛рдВ рдХрд╛рд░реНрдп рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рджреЗрддрд╛ рд╣реИ:
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)
- рдЧреНрдпрд╛рд░рд╣рд╡реЗрдВ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИ:
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)
- рдмрд╛рд░рд╣рд╡реЗрдВ рд╕рдорд╛рд░реЛрд╣ рдкреЙрдк-рдЕрдк рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ:
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
- рддреЗрд░рд╣рд╡реЗрдВ рд╕рдорд╛рд░реЛрд╣ рдХреА рддрд░рд╣ рд╣реИ:
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))
рдЕрдм tinder.py рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЬрд╛рдПрдБ рдФрд░ рд╕рднреА рдлрдВрдХреНрд╢рдиреНрд╕ рдХреЗ рдЖрдпрд╛рдд рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ: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
OS рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
info, put = get_OC()
print(info)
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░реЗрдВ:
chromedriver = put
options = webdriver.ChromeOptions()
options.add_argument('--start-minimize')
browser = webdriver.Chrome(executable_path=chromedriver, chrome_options=options)
рдпрджрд┐ рдЖрдк рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ selenium.webdriver рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрдврд╝реЗрдВ ред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓реЙрдиреНрдЪ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЯрд┐рдВрдбрд░ рдкреЗрдЬ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ:
browser.get('https://tinder.com/app/recs')
рдЕрдм рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
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)
рдирд┐рд╖реНрдХрд░реНрд╖
рдЕрдВрдд рдореЗрдВ, рдПрдХ рдмреЙрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬреЛ рдЯрд┐рдВрдбрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд▓рд╛рдЗрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИредрдЖрдкрдХреЛ рдмрд╕ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдореЗрдВ рдЖрд╡реЗрджрди рдореЗрдВ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдкрд╕реАрд╕рд╣рд╛рдиреБрднреВрддрд┐ рдХреЗ рд╕рд╛рде рдмрд╛рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ редрдСрдЯреЛрдореЗрд╢рди рдкреБрд░реБрд╖реЛрдВ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╣реИ рдХрд┐ рдХрд╛рдо рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рдорд╣рд┐рд▓рд╛рдПрдВ рдРрд╕рд╛ рдХрд░ рд╕рдХреЗрдВред
рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЖрдкрд╕реА рдкрд╕рдВрдж рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗред