RateSetter adalah startup yang menawarkan rekening tabungan berdasarkan pinjaman peer-to-peer. Namun, mereka mengalami kesulitan keuangan dan sekarang Anda tidak dapat menarik uang Anda; ada sistem antrian.
Maklum, investor sehari-hari tidak senang.
Anda ingin menarik uang sebanyak mungkin dari akun RateSetter Anda, namun karena sistem antriannya, Anda tidak dapat menarik uang Anda. Anda telah meminta untuk "mencairkan dana", namun ada ribuan orang di depan Anda. Anda benar-benar perlu menarik sebagian uang Anda secepatnya. Atau, Anda khawatir perusahaan akan bangkrut, jadi Anda lebih memilih uang Anda kembali!
"Waktu yang dibutuhkan investor untuk mengakses dananya lebih lama dari biasanya" ... bisa memakan waktu berbulan-bulan! ?
Tujuannya adalah untuk memeriksa akun RateSetter Anda secara berkala, dan sering menarik sejumlah kecil uang.
Setelah menjalankan skrip selama sekitar dua minggu, bot melakukan 40 penarikan. Sebagian besar penarikan mendekati jumlah minimum (sekitar £2), tetapi kami memiliki satu penarikan sebesar ~£7,900. Dua lainnya bernilai lebih dari £100.
Karena cara kerja RateSetter, uang sering berpindah antar akun.
Jumlah uang Anda "Dipinjamkan" berubah secara berkala.
Wawasan/celah utama : Jika beberapa pound untuk sementara berada di "Rekening Penyimpanan" atau "Di Pasar", kami dapat segera menarik uang tersebut. Biasanya jumlahnya kecil, seperti beberapa kilogram saja – namun tampaknya bervariasi.
Hampir tidak ada gunanya masuk ke RateSetter terlalu sering untuk memeriksa apakah ada £2 di sini, atau £5 di sana, untuk ditarik. Dan kalau kita tidak login, uangnya cepat dipinjamkan lagi.
Inilah inti dari bot: segera temukan ketika ada beberapa pound yang tidak "dipinjamkan", dan tariklah sebelum terikat dengan peminjam lain.
Jika ada uang untuk sementara di "On Holding" atau "On Market": bot akan secara otomatis mengklik tombol "Withdraw" untuk Anda, lalu memasukkan jumlah maksimum yang mungkin di layar berikutnya. (Sebenarnya, bot akan memasukkan jumlah beberapa sen kurang dari jumlah maksimum – lihat bagian "Mengidentifikasi penarikan" di bawah.) Terakhir, bot akan mengirimi Anda email untuk mengonfirmasi setiap kali penarikan dilakukan.
Bot akan tetap berjalan di komputer Anda, memerlukan waktu sekitar satu menit untuk melewati satu siklus klik. Di akhir siklus, ia kembali ke halaman 'Ikhtisar', untuk memeriksa perubahan apa pun. Ia memeriksa, dan dapat menarik diri dari, semua akun (misalnya, akun "Sehari-hari" dan akun "ISA" Anda.)
Untuk menghindari kewalahan/bingung oleh sejumlah besar penarikan kecil (~£2) yang menyumbat laporan bank Anda, bot akan mengatur jumlah sen agar sesuai dengan nomor penarikan.
Misalnya, jika £25,40 tersedia untuk ditarik, dan bot ingin melakukan penarikan nomor 12, maka hanya £25,12 yang akan ditarik – bukan £25,40 penuh yang tersedia.
Kali berikutnya, bot akan menarik £xx.13.
Ini akan memudahkan untuk mengidentifikasi jumlah penarikan yang masuk ke rekening bank Anda.
Dalam pengalaman saya menggunakan bot ini, sebagian besar dari 25 penarikan pertama adalah sekitar £2. Salah satunya adalah sekitar £200. Lalu yang satu adalah ~£7,900. Boom, efektivitas bot telah divalidasi – bot ini segera ditarik.
Jika Anda lebih memilih untuk hanya melihat saat-saat ketika ada jumlah uang yang layak untuk ditarik, Anda harus menyesuaikan nilai MIN_PAYOUT
di config.py
.
Jika MIN_PAYOUT = 1.00
, maka Anda dapat melakukan penarikan mulai dari £1,01, £1,02, £1,03, dll.
Karena jumlah sen sesuai dengan nomor penarikan, jika MIN_PAYOUT = 2.00
, dan kita berada di nomor pembayaran 12, namun hanya £2.05 yang tersedia untuk ditarik, maka penarikan tidak akan dilakukan. (Setidaknya harus ada £2,12 yang tersedia untuk ditarik.)
Saya sarankan membiarkan MIN_PAYOUT
rendah (misal, 1,00) untuk memulai (sehingga Anda melihat bot seaktif mungkin). Kemudian jika jumlah penarikan yang kecil mengganggu, Anda dapat meningkatkan ambang batas ini (misalnya menjadi 20). Tidak, jika Anda membuat perubahan apa pun pada config.py, Anda harus menghentikan bot dan memulai kembali bot agar perubahan dapat diterapkan.
Aktifkan menu "Kembangkan".
(Jika Anda tidak melihat menu Kembangkan di bilah menu, pilih Safari > Preferensi, klik Lanjutan, lalu pilih “Tampilkan menu Kembangkan di bilah menu”.)
Di menu "Kembangkan", klik "Izinkan Otomatisasi Jarak Jauh".
Skrip ini (Selenium) berfungsi dengan Chrome, Firefox, Safari (atau lainnya). Keuntungan Safari adalah driver web sudah diinstal sebelumnya di Mac. Namun pra-install driver Selenium untuk browser lain juga sangat mudah.
Jika Anda menggunakan selain Safari: ikuti dokumen Selenium untuk mengunduh driver untuk browser pilihan Anda.
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)
Secara pribadi, saya lebih suka menggunakan Chrome karena tidak terlalu merepotkan (misalnya, memperkecil atau mengubah ukuran jendela).
Jalankan perintah berikut di terminal Anda:
Buat lingkungan virtual dengan python 3
virtualenv rsbot -p python3
cd rsbot
. bin/activate
Unduh kode ke komputer Anda
git clone https://github.com/markitics/ratesetter-withdraw-bot
Instal dependensi
cd ratesetter-withdraw-bot
pip install -r requirements.txt
(Saya mengetik ini dari memori - Anda mungkin perlu naik/turun folder agar persyaratan.txt diinstal ke lingkungan virtual dengan benar.)
Anda harus mempersonalisasi:
SEND_EMAILS
ke False
agar tidak repot dengan email. Saat skrip berjalan, ada hasil cetak dari setiap upaya, jadi Anda tidak terlalu memerlukan email jika Anda mau.Anda juga dapat mempersonalisasi:
Anda harus membuat file baru bernama config.py
Buat file baru config.py, di samping config.example.py. Artinya, file baru harus berada di direktori yang sama dengan config.example.py
Masukkan email dan kata sandi Anda sendiri di sini. Biarkan config.example.py tidak tersentuh, untuk referensi.
Jangan terintimidasi!
Jika Anda tidak memerlukan pemberitahuan email, config.py
bisa cukup sederhana:
# 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
Jika Anda menginginkan pemberitahuan email , file config.py
Anda yang sudah selesai akan terlihat seperti ini:
# 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 ])
Siapa yang harus menerima email peringatan?
WEBMASTER_EMAIL
akan menerima peringatan, "Bot mengalami masalah" dan secara berkala, "Bot masih berjalan" ACCOUNT_OWNER_EMAIL
akan menerima email, "Penarikan berhasil dilakukan"
Hapus (atau beri komentar) opsi 1 atau opsi 2 dari 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])
Setiap hari Anda ingin memulai kode, Anda harus melakukannya terlebih dahulu . bin/activate
untuk mengaktifkan lingkungan python virtual, sebelum meluncurkan shell python.
Jika Anda berada di folder rs-withdraw-bot
, perintahnya adalah:
. ../bin/activate # .. goes up to parent folder
Buka cangkang python
python
Di cangkang python,
>>> from withdraw import keep_trying
Jangan salin-tempel >>>
– itu hanya petunjuk visual bahwa Anda berada di "shell python".
Sekarang jendela Safari (atau Chrome) akan terbuka. Jika tampaknya Safari siap untuk dikontrol, lanjutkan dan jalankan perintah master untuk memulai bot:
>>> keep_trying() # will send confirmation email once it starts up
ATAU
>>> keep_trying(initial_email=False) # default is True
Jika initial_email=True
, ia akan mengirimkan email kepada Anda setelah 1 kali mencoba, sehingga Anda dapat memeriksa apakah email terkirim dengan benar.
Secara default, untuk mengonfirmasi bahwa bot tidak mogok, bot akan mengirimkan email lagi kepada Anda setiap 200 upaya (setiap upaya EMAIL_EVERY_N_ATTEMPTS
) – hanya untuk memberi tahu Anda bahwa bot masih aktif dan berfungsi. Anda dapat mengubah pengaturan ini di config.py
.
Mungkin Anda mematikan komputer, atau perlu memulai ulang bot.
Dalam hal ini, sesuaikan NEXT_PAYOUT_NUMBER
di config.py
agar sesuai dengan nomor pembayaran berikutnya.
Pembayaran diberi nomor 1, 2, 3, dst.
Jumlah pembayaran memiliki jumlah sen yang sesuai, untuk memudahkan mengidentifikasi penarikan pada laporan bank Anda.
Misalnya, beberapa penarikan pertama mungkin: £29,01, £2,02, £14,03, £210,04, dll.
Jika Anda memulai kembali bot setelah penarikan nomor 4 dilakukan, Anda harus menyetel NEXT_PAYOUT_NUMBER = 5
di config.py
. Maka jumlah penarikan berikutnya adalah £XX.05.
Anda harus menyiapkan filter agar email peringatan tidak masuk ke spam.
https://www.jotform.com/help/404-how-to-prevent-emails-from-landing-in-gmail-s-spam-folder
Sangat mudah untuk memiliki dua jendela Chrome terpisah yang dikendalikan oleh dua bot terpisah.
Jalankan yang pertama, lalu buka jendela terminal baru.
Sesuaikan detail login di config.py
untuk mencerminkan akun kedua:
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
Simpan perubahan Anda pada config sebelum Anda menjalankan perintah python
.
[email protected]
Twitter @MbyM
Ini adalah proyek menyenangkan ad-hoc, pertama kalinya saya bermain dengan Selenium. Saya tidak punya rencana untuk mempertahankan ini atau menawarkan dukungan kepada orang asing.
Tidak untuk digunakan untuk penggunaan komersial.
Jangan mengurangi masa 'tunggu'; jangan menyalahgunakan situs web RateSetter. Sebenarnya menjalankan skrip mungkin dilarang oleh persyaratan layanan RateSetter – periksa sendiri.
Teman mana pun yang memiliki pengetahuan sepintas tentang python seharusnya dapat membantu Anda menjalankan skrip ini di komputer Anda. Kemungkinannya adalah mereka bahkan akan memperbaikinya – ini masih sangat kasar dan siap pakai!
CC-BY-NC – bukan untuk penggunaan komersial.