RateSetter 是一家提供基于点对点借贷的储蓄账户的初创公司。但是,他们遇到了经济困难,现在你无法提取你的钱;有一个排队系统。
可以理解的是,日常投资者并不高兴。
您希望从您的 RateSetter 账户中提取尽可能多的资金,但由于他们的排队系统,您无法提取资金。你要求“释放资金”,但前面有成千上万的人。您确实需要尽快提取一些钱。或者,您担心公司会倒闭,所以您宁愿拿回您的钱!
“投资者获取资金所需的时间比平时更长” ……可能需要几个月的时间! ?
目标是定期检查您的 RateSetter 帐户,并经常提取少量资金。
运行脚本大约两周后,机器人进行了 40 次提款。大多数提款都接近最低金额(约 2 英镑),但我们有一次提款约为 7,900 英镑。另外两个超过100英镑。
由于 RateSetter 的工作方式,资金经常在账户之间流动。
您的“贷款”金额会定期变化。
关键见解/漏洞:如果几英镑暂时存在“持有账户”或“市场上”,我们可以立即提取这笔钱。通常情况下,这个数额很小,比如几磅——但似乎有所不同。
经常登录 RateSetter 来检查这里是否有 2 英镑或那里是否有 5 英镑可以提取,几乎不值得。如果我们不登录,钱很快就会再次被借出。
这就是机器人的全部要点:立即发现有几英镑没有“借出”,并在它们与另一个借款人联系之前将其提取。
如果有资金暂时处于“持有”或“市场”状态:机器人将自动为您单击“提款”按钮,然后在下一个屏幕上输入可能的最大金额。 (实际上,它会输入比最大金额少几美分的金额 - 请参阅下面的“识别提款”部分。)最后,每次提款时,机器人都会向您发送一封电子邮件以确认。
该机器人应该继续在您的计算机上运行,花费一分钟左右的时间完成一个点击周期。在周期结束时,它返回到“概述”页面,以检查是否有任何更改。它检查并可以从所有帐户(例如您的“日常”帐户和“ISA”帐户)中提款。
为了避免因大量小额(约 2 英镑)提款而淹没您的银行对账单而不知所措/困惑,机器人将设置与提款数量相匹配的便士数量。
例如,如果 25.40 英镑可供提取,而机器人希望提款编号为 12,则只能提取 25.12 英镑,而不是可用的全部 25.40 英镑。
下一次,机器人将提取 £xx.13。
这应该可以更轻松地识别您银行账户的提款金额。
根据我使用该机器人的经验,前 25 笔提款中的大部分金额约为 2 英镑。一份大约200英镑。然后一个是〜7,900英镑。 Boom,该机器人的有效性已经得到验证 - 这立即被撤回。
如果您只想在有大量资金可供提取时查看,则应该调整config.py
中的MIN_PAYOUT
值。
如果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
(我凭记忆输入此内容 - 您可能需要向上/向下移动文件夹才能将requirements.txt正确安装到虚拟环境中。)
您必须个性化:
SEND_EMAILS
设置为False
以不处理电子邮件。当脚本运行时,每次尝试都会打印输出,因此如果您愿意,您实际上并不需要电子邮件。您可以选择个性化:
您必须创建一个名为 config.py 的新文件
在 config.example.py 旁边创建一个新文件 config.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
将收到电子邮件“已成功提款”
从config.py
中删除(或注释掉)选项 1 或选项 2
# 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 shell 之前激活虚拟 python 环境。
如果您位于rs-withdraw-bot
文件夹中,则命令为:
. ../bin/activate # .. goes up to parent folder
打开Python外壳
python
在 python shell 中,
>>> from withdraw import keep_trying
不要复制粘贴>>>
– 这只是您处于“python shell”中的视觉线索。
现在应该会启动 Safari(或 Chrome)窗口。如果 Safari 看起来已准备好被控制,请继续运行 master 命令来启动机器人:
>>> keep_trying() # will send confirmation email once it starts up
或者
>>> keep_trying(initial_email=False) # default is True
如果initial_email=True
,它会在 1 次尝试后向您发送电子邮件,以便您可以检查电子邮件是否正确发送。
默认情况下,为了确认它没有崩溃,机器人会每 200 次尝试(每EMAIL_EVERY_N_ATTEMPTS
次尝试)再次向您发送电子邮件 – 只是为了让您知道它还活着并且正在工作。您可以在config.py
中更改此设置。
也许您关闭了计算机,或者需要重新启动机器人。
在这种情况下,请调整config.py
中的NEXT_PAYOUT_NUMBER
以匹配下一个付款号码。
支出编号为 1、2、3 等。
付款金额有相应的便士数量,以便更轻松地在银行对账单上识别提款。
例如,前几次提款可能是:29.01英镑、2.02英镑、14.03英镑、210.04英镑等。
如果您在提款编号 4 后重新启动机器人,则应在config.py
中设置NEXT_PAYOUT_NUMBER = 5
。那么下一次提款金额将为 £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 网站。实际上,RateSetter 服务条款可能禁止运行该脚本 - 请自行检查。
任何对Python有粗略了解的朋友应该能够帮助你让这个脚本在你的计算机上运行。他们甚至可能会改进它——这已经是非常粗糙的了!
CC-BY-NC – 不得用于商业用途。