RateSetter — это стартап, предлагающий сберегательные счета на основе однорангового кредитования. Но они столкнулись с финансовыми трудностями, и теперь вы не можете снять свои деньги; есть система очередей.
Понятно, что обычные инвесторы недовольны.
Вы хотите снять как можно больше денег со своего счета в RaceSetter, но из-за их системы очередей вы не можете снять свои деньги. Вы просили «высвободить средства», но перед вами тысячи людей. Вам действительно нужно как можно скорее вывести часть своих денег. Или вы нервничаете, что компания обанкротится, поэтому вам лучше просто вернуть свои деньги!
«Время, необходимое инвесторам для доступа к своим средствам, занимает больше времени, чем обычно» … это может занять месяцы! ?
Цель состоит в том, чтобы периодически проверять свою учетную запись RateSetter и часто снимать небольшие суммы денег.
Проработав скрипт около двух недель, бот совершил 40 выводов средств. Большинство выводов были близки к минимуму (около 2 фунтов стерлингов), но у нас был один вывод на сумму около 7900 фунтов стерлингов. Двое других имели сумму более 100 фунтов стерлингов.
Из-за особенностей работы RateSetter деньги часто перемещаются между счетами.
Сумма ваших денег «В долг» периодически меняется.
Ключевая идея/лазейка : если несколько фунтов временно находятся на «Хранящем счете» или «На рынке», мы можем сразу снять эти деньги. Обычно это небольшая сумма, всего несколько фунтов, но она может варьироваться.
Вряд ли стоит часто заходить в RateSetter, чтобы проверить, есть ли здесь 2 фунта или там 5 фунтов для вывода. И если мы не авторизуемся, деньги быстро выдаются в долг снова.
В этом вся суть бота: сразу же обнаружить, когда есть несколько фунтов, не «взятых взаймы», и снять их, прежде чем они будут связаны с другим заемщиком.
Если какие-либо деньги временно находятся в «На хранении» или «На рынке»: бот автоматически нажмет за вас кнопку «Вывести», а затем введет максимально возможную сумму на следующем экране. (На самом деле он вводит сумму на несколько копеек меньше максимальной суммы — см. раздел «Определение вывода средств» ниже.) Наконец, бот будет отправлять вам электронное письмо для подтверждения каждый раз, когда производится вывод средств.
Бот должен продолжать работать на вашем компьютере, выполняя один цикл кликов около минуты. В конце цикла он возвращается на страницу «Обзор», чтобы проверить наличие изменений. Он проверяет и может снимать средства со всех учетных записей (например, вашей учетной записи «Everyday» и учетной записи «ISA»).
Чтобы не запутаться и не запутаться из-за большого количества небольших (около 2 фунтов стерлингов) снятий средств, засоряющих вашу банковскую выписку, бот установит количество пенни, соответствующее номеру вывода.
Например, если становится доступным для вывода 25,40 фунтов стерлингов, а бот хочет сделать вывод под номером 12, то будет снято только 25,12 фунтов стерлингов, а не полные доступные 25,40 фунтов стерлингов.
В следующий раз бот выведет £x,13.
Это должно облегчить определение сумм вывода средств, поступающих на ваш банковский счет.
По моему опыту использования этого бота, большая часть из первых 25 выводов средств составила около 2 фунтов стерлингов. Один стоил около 200 фунтов. Тогда один стоил ~7900 фунтов стерлингов. Бум, эффективность бота была подтверждена – его немедленно отозвали.
Если вы предпочитаете следить только за моментами, когда есть приличная сумма денег для вывода, вам следует настроить значение MIN_PAYOUT
в config.py
.
Если MIN_PAYOUT = 1.00
, вы можете вывести средства всего на 1,01 фунта стерлингов, 1,02 фунта стерлингов, 1,03 фунта стерлингов и т. д.
Поскольку количество пенни соответствует номеру вывода, если MIN_PAYOUT = 2.00
и у нас номер выплаты 12, но для вывода доступно только 2,05 фунта стерлингов, то вывод не будет произведен. (Для вывода средств необходимо иметь как минимум 2,12 фунта стерлингов.)
Я бы рекомендовал оставить минимальное значение MIN_PAYOUT
(например, 1,00) для начала (чтобы вы видели, что бот максимально активен). Тогда, если маленькие суммы вывода раздражают, вы можете увеличить этот порог (например, до 20). Нет, если вы вносите какие-либо изменения в config.py, вам необходимо остановить и перезапустить бота, чтобы изменения вступили в силу.
Включите меню «Разработка».
(Если вы не видите меню «Разработка» в строке меню, выберите Safari > «Настройки», нажмите «Дополнительно», затем выберите «Показать меню «Разработка» в строке меню».)
В меню «Разработка» нажмите «Разрешить удаленную автоматизацию».
Этот скрипт (Selenium) работает с Chrome, Firefox, Safari (или другими). Преимущество Safari в том, что на Mac предварительно установлен веб-драйвер. Но предустановить драйвер Selenium для других браузеров тоже очень просто.
Если вы используете что-либо кроме Safari: следуйте документации Selenium, чтобы загрузить драйвер для предпочитаемого вами браузера.
https://selenium-python.readthedocs.io/installation.html#drivers
# Example using Chrome
from selenium import webdriver
from selenium . webdriver . chrome . options import Options
chrome_options = Options ()
# chrome_options.add_argument('--headless')
# --headles makes actions invisible
# without --headless, I can follow the script's progress
chrome_options . add_argument ( '--no-sandbox' )
# chrome_options.add_argument('--disable-dev-shm-usage')
browser = webdriver . Chrome ( '/usr/local/bin/chromedriver' , options = chrome_options )
# put path to executable chromedriver as first argument (wherever you downloaded it)
Лично я предпочитаю использовать Chrome, поскольку он менее утомительный (например, уменьшение масштаба или изменение размера окна).
Запустите в своем терминале следующее:
Создайте виртуальную среду с помощью Python 3.
virtualenv rsbot -p python3
cd rsbot
. bin/activate
Загрузите код на свой компьютер
git clone https://github.com/markitics/ratesetter-withdraw-bot
Установить зависимости
cd ratesetter-withdraw-bot
pip install -r requirements.txt
(Я пишу это по памяти — возможно, вам придется перейти вверх или вниз по папке, чтобы файл require.txt был правильно установлен в виртуальной среде.)
Вы должны персонализировать:
SEND_EMAILS
значение False
чтобы не беспокоиться об электронных письмах. Во время выполнения сценария каждая попытка распечатывается, поэтому вам не нужны электронные письма, если вы предпочитаете.При желании вы можете персонализировать:
Вы должны создать новый файл с именем config.py.
Создайте новый файл config.py рядом с config.example.py. То есть новый файл должен находиться в том же каталоге, что и config.example.py.
Введите сюда свой адрес электронной почты и пароль. Для справки оставьте config.example.py нетронутым.
Не пугайтесь!
Если вам не нужны оповещения по электронной почте, файл config.py
может быть достаточно простым:
# RateSetter login details
LOGIN_URL = 'https://members.ratesetter.com/login.aspx'
RS_PASSWORD = 'ratesetterpass123'
RS_EMAIL , NEXT_PAYOUT_NUMBER = '[email protected]' , 1
# RateSetter thresholds
OVERVIEW_URL = 'https://members.ratesetter.com/overview.aspx#'
MIN_PAYOUT = 1.00 # If set to 4.00, min payout is 4.00 + payout_number in pennies
# Reminder: if there's 1.25 available, MIN_PAYOUT 1.00, but we're on payout number 30: no money will be withdrawn.
NUMBER_OF_ACCOUNTS = 2 # e.g., ISA and Everyday
WAIT_SECONDS = 30 # between page loads / clicks
# remember with wait_approx, this is +/- 20%
# Email settings
SEND_EMAILS = False
Если вам нужны оповещения по электронной почте , ваш готовый файл config.py
будет выглядеть примерно так:
# config.py
# RateSetter login details
LOGIN_URL = 'https://members.ratesetter.com/login.aspx'
RS_PASSWORD = 'ratesetterpass123'
RS_EMAIL , NEXT_PAYOUT_NUMBER = '[email protected]' , 1 # adjust payout number if you re-start the bot
# RateSetter thresholds
# WITHDRAW_URL = 'https://members.ratesetter.com/your_lending/payments/one_off_withdraw.aspx'
OVERVIEW_URL = 'https://members.ratesetter.com/overview.aspx#'
MIN_PAYOUT = 1.00 # If set to 4.00, min payout is 4.00 + payout_number in pennies
# Reminder: if there's 1.25 available, MIN_PAYOUT 1.00, but we're on payout number 30: no money will be withdrawn.
NUMBER_OF_ACCOUNTS = 2 # e.g. one Everyday and one ISA account = 2 accounts
WAIT_SECONDS = 30 # between page loads / clicks
# remember with wait_approx, this is +/- 20%
SEND_EMAILS = True # set to False (capital F) if you'd like to skip everything below this line
EMAIL_EVERY_N_ATTEMPTS = 200 # Send email regardless of success/fail, so we know bot is still running
# WEBMASTER_EMAIL will receive these alerts
# Email settings
# Email login: for the email that will send you alerts (e.g., gmail)
EMAIL_HOST = "smtp.gmail.com"
EMAIL_USER = '[email protected]' # might be the same as RS_EMAIL, but might be different
EMAIL_PASSWORD = "gmailpass456"
EMAIL_USE_SSL = False # if using port 465
EMAIL_PORT = 587 # trying to use TLS
EMAIL_USE_TLS = True # if using port 587
# Note, in order to use your own gmail, you must first allow "insecure apps":
# https://myaccount.google.com/lesssecureapps
# Otherwise the bot's login attempt will fail.
# If you have two-factor authentication set up for Google, this won't work.
# Once you start the bot, check your spam folder. (In gmail, for 'in:spam'.)
# Gmail can see that emails are being sent by a bot, and they look repetitive...
# ...so there's a decent chance your emails will wind up in spam.
# Email alert details - option 1: You're running this script on behalf of a friend
SENDER = "RateSetterBot <%s>" % EMAIL_USER
ACCOUNT_OWNER_EMAIL = RS_EMAIL . replace ( '@' , '+rsalert@' )
# Who should receive the alert emails?
# WEBMASTER_EMAIL will receive the alerts, "Bot ran into a problem" and periodically, "Bot is still running"
# ACCOUNT_OWNER_EMAIL will receive emails, "Successful withdrawal has been made"
# Email alert details - option 1: You're running this script for yourself
WEBMASTER_EMAIL = ACCOUNT_OWNER_EMAIL # notified when script hits an error, and occasional
ALL_EMAIL_RECIPIENTS = ACCOUNT_OWNER_EMAIL
# Email alert details - option 2: You're running this script on behalf of a friend
WEBMASTER_EMAIL = "Mark <[email protected]>"
ALL_EMAIL_RECIPIENTS = ', ' . join ([ WEBMASTER_EMAIL , ACCOUNT_OWNER_EMAIL ])
Кто должен получать оповещения по электронной почте?
WEBMASTER_EMAIL
будет получать оповещения «Бот столкнулся с проблемой» и периодически «Бот все еще работает». ACCOUNT_OWNER_EMAIL
будет получать электронные письма «Вывод средств осуществлен успешно».
Удалите (или закомментируйте) опцию 1 или опцию 2 из config.py
# Email alert details - option 1: You're running this script for yourself
WEBMASTER_EMAIL = ACCOUNT_OWNER_EMAIL # notified when script hits an error, and occasional
ALL_EMAIL_RECIPIENTS = ACCOUNT_OWNER_EMAIL
# Email alert details - option 2: You're running this script on behalf of a friend
WEBMASTER_EMAIL = "Mark <[email protected]>"
ALL_EMAIL_RECIPIENTS = ', '.join([WEBMASTER_EMAIL, ACCOUNT_OWNER_EMAIL])
Каждый день, когда вы хотите запустить код, вы должны сначала выполнить . bin/activate
, чтобы активировать виртуальную среду Python перед запуском оболочки Python.
Если вы находитесь в папке rs-withdraw-bot
, команда будет такой:
. ../bin/activate # .. goes up to parent folder
Откройте оболочку Python
python
В оболочке Python
>>> from withdraw import keep_trying
Не копируйте и вставляйте >>>
— это всего лишь визуальный признак того, что вы находитесь в «оболочке Python».
Теперь должно открыться окно Safari (или Chrome). Если похоже, что Safari готов к управлению, запустите главную команду, чтобы запустить бота:
>>> keep_trying() # will send confirmation email once it starts up
ИЛИ
>>> keep_trying(initial_email=False) # default is True
Если initial_email=True
, он отправит вам электронное письмо после первой попытки, чтобы вы могли проверить правильность отправки электронного письма.
По умолчанию, чтобы убедиться, что бот не сбился, он будет отправлять вам электронное письмо каждые 200 попыток (каждые попытки EMAIL_EVERY_N_ATTEMPTS
) — просто чтобы вы знали, что он жив и работает. Вы можете изменить этот параметр в config.py
.
Возможно, вы выключили компьютер или нужно перезапустить бота.
В этом случае измените NEXT_PAYOUT_NUMBER
в config.py
так, чтобы он соответствовал следующему номеру выплаты.
Выплаты пронумерованы 1, 2, 3 и т. д.
Суммы выплат указаны в соответствующем количестве пенсов, чтобы было легче идентифицировать снятие средств в выписке по вашему банковскому счету.
Например, первые несколько выводов могут составлять: 29,01 фунта стерлингов, 2,02 фунта стерлингов, 14,03 фунта стерлингов, 210,04 фунта стерлингов и т. д.
Если вы перезапустите бота после вывода номера 4, вам следует установить NEXT_PAYOUT_NUMBER = 5
в config.py
. Тогда следующая сумма вывода составит XX,05 фунтов стерлингов.
Вам следует настроить фильтр, чтобы электронные письма с предупреждениями не попадали в спам.
https://www.jotform.com/help/404-how-to-prevent-emails-from-landing-in-gmail-s-spam-folder
Легко иметь два отдельных окна Chrome, контролируемых двумя отдельными ботами.
Запустите первый, затем откройте новое окно терминала.
Настройте данные для входа в config.py
чтобы они отражали вторую учетную запись:
RS_PASSWORD='ratesetterpass321'
RS_EMAIL, NEXT_PAYOUT_NUMBER = '[email protected]', 1
# Adjust payout number (from 1 to a higher number) if you re-start the bot, to match next withdrawal number
Сохраните изменения в конфигурации перед запуском команды python
.
[email protected]
Твиттер @MbyM
Это был специальный интересный проект, я впервые играл с Selenium. У меня нет планов поддерживать это или предлагать поддержку незнакомцам.
Не использовать для коммерческого использования.
Не сокращайте периоды «ожидания»; не злоупотребляйте веб-сайтом RateSetter. На самом деле запуск скрипта может быть запрещен условиями обслуживания RaceSetter — проверьте это сами.
Любой друг, имеющий беглые знания Python, сможет помочь вам запустить этот скрипт на вашем компьютере. Скорее всего, они даже улучшат его – он и так очень черновой!
CC-BY-NC – не для коммерческого использования.