RateSetter は、ピアツーピア融資に基づいた貯蓄口座を提供するスタートアップです。しかし、彼らは財政難に陥り、今ではお金を引き出すことができません。順番待ちシステムがあります。
当然のことながら、日常の投資家は満足していません。
RateSetter アカウントからできるだけ多くのお金を引き出したいと考えていますが、キュー システムのせいでお金を引き出すことができません。あなたは「資金の解放」を要求しましたが、あなたの前には何千人もの人々がいます。本当にできるだけ早くお金の一部を引き出す必要があります。あるいは、会社が倒産するのではないかと不安なので、むしろお金を返してほしいと思っているかもしれません。
「投資家が資金にアクセスするのに通常よりも時間がかかっています」 …数か月かかる場合もあります。 ?
目標は、RateSetter アカウントを定期的にチェックし、少額のお金を頻繁に引き出すことです。
スクリプトを約 2 週間実行した後、ボットは 40 件の出金を行いました。ほとんどの出金は最低額(約 2 ポンド)に近かったのですが、最大 7,900 ポンドの出金が 1 件ありました。他の2つは100ポンド以上でした。
RateSetter の仕組みにより、資金はアカウント間で頻繁に移動します。
「ローン」の金額は定期的に変更されます。
重要な洞察/抜け穴: 数ポンドが一時的に「保有口座」または「市場」にある場合、そのお金をすぐに引き出すことができます。通常、これはわずか数ポンドなどの少額ですが、状況によって異なるようです。
引き出すためにここに 2 ポンドがあるか、あそこに 5 ポンドがあるかを確認するために頻繁に RateSetter にログインする価値はほとんどありません。そして、ログインしなければ、お金はすぐにまた貸し出されてしまいます。
これがこのボットの要点です。「貸し出し中」ではない数ポンドがあることを即座に発見し、別の借り手と結びつく前に引き出します。
一時的に資金が「保留中」または「市場に出ている」場合、ボットは自動的に「出金」ボタンをクリックし、次の画面で可能な最大金額を入力します。 (実際には、最大金額より数ペニー少ない金額が入力されます。以下の「出金の識別」セクションを参照してください。) 最後に、ボットは出金が行われるたびに確認のメールを送信します。
ボットはコンピューター上で実行を続け、クリックが 1 サイクル完了するまでに 1 分ほどかかります。サイクルの最後に、「概要」ページに戻り、変更がないか確認します。すべてのアカウント (「Everyday」アカウントや「ISA」アカウントなど) をチェックし、そこから引き出すことができます。
膨大な数の少額 (~2 ポンド) の出金によって銀行取引明細書が詰まるのを避けるために、ボットは出金番号と一致するペニーの数を設定します。
たとえば、25.40 ポンドが出金可能になり、ボットが出金番号 12 を指定した場合、利用可能な 25.40 ポンド全額ではなく、25.12 ポンドのみが引き出されます。
次回、ボットは £xx.13 を引き出します。
これにより、銀行口座への出金額を簡単に特定できるようになります。
このボットを使用した私の経験では、最初の 25 回の出金のほとんどは約 2 ポンドでした。 1つあたり200ポンドくらいでした。そのときは1つが約7,900ポンドでした。ブーム、ボットの有効性が検証されました – これはすぐに撤回されました。
十分な金額が出金できる瞬間だけを探したい場合は、 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 の利点は、Web ドライバーが 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 シェルを起動する前に、 . bin/activate
実行して仮想 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
の場合、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
2 つの別個の Chrome ウィンドウを 2 つの別個のボットで制御するのは簡単です。
最初のものを実行してから、新しいターミナル ウィンドウを開きます。
2 番目のアカウントを反映するように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 Web サイトを悪用しないでください。実際にスクリプトを実行することは、RateSetter の利用規約によって禁止されている可能性があります。これは自分で確認してください。
Python について大まかな知識がある友人なら、このスクリプトをコンピュータ上で実行できるように手伝ってくれるはずです。彼らがそれを改善する可能性もあります。これは現状では非常に荒削りな状態です。
CC-BY-NC – 商用目的ではありません。