RateSetter เป็นสตาร์ทอัพที่นำเสนอบัญชีออมทรัพย์โดยอาศัยการให้กู้ยืมแบบ peer-to-peer แต่พวกเขาประสบปัญหาทางการเงิน และตอนนี้คุณไม่สามารถถอนเงินของคุณได้ มีระบบคิว.
เป็นที่เข้าใจได้ว่านักลงทุนในแต่ละวันไม่มีความสุข
คุณต้องการถอนเงินออกจากบัญชี RateSetter ของคุณให้ได้มากที่สุดเท่าที่จะเป็นไปได้ แต่เนื่องจากระบบการเข้าคิว คุณจึงไม่สามารถถอนเงินของคุณได้ คุณได้ร้องขอ "ปล่อยเงินทุน" แต่มีคนรอคุณอยู่หลายพันคน คุณต้องถอนเงินบางส่วนออกโดยเร็วที่สุด หรือคุณกังวลว่าบริษัทจะล่มสลาย ดังนั้นคุณคงอยากได้เงินคืนดีกว่า!
"เวลาที่นักลงทุนเข้าถึงเงินทุนของพวกเขาใช้เวลานานกว่าปกติ" ... อาจใช้เวลาหลายเดือน! -
เป้าหมายคือการตรวจสอบบัญชี RateSetter ของคุณเป็นระยะ และถอนเงินจำนวนเล็กน้อยบ่อยครั้ง
หลังจากรันสคริปต์ประมาณสองสัปดาห์ บอทก็ถอนเงินได้ 40 ครั้ง การถอนเงินส่วนใหญ่ใกล้เคียงกับขั้นต่ำ (ประมาณ 2 ปอนด์) แต่เรามีการถอนเงินหนึ่งครั้งที่ ~ 7,900 ปอนด์ อีกสองคนมีมูลค่ามากกว่า 100 ปอนด์
เนื่องจากวิธีการทำงานของ RateSetter เงินจึงมีการเคลื่อนย้ายระหว่างบัญชีอยู่บ่อยครั้ง
จำนวนเงินของคุณ "สินเชื่อ" เปลี่ยนแปลงเป็นระยะ
ข้อมูลเชิงลึก/ช่องโหว่ที่สำคัญ : หากมีเงินไม่กี่ปอนด์อยู่ใน "บัญชีโฮลดิ้ง" หรือ "ในตลาด" ชั่วคราว เราสามารถถอนเงินนั้นได้ทันที โดยปกติแล้ว นี่เป็นจำนวนเล็กน้อย เช่น เพียงไม่กี่ปอนด์ แต่ดูเหมือนว่าจะแตกต่างกันไป
มันไม่คุ้มค่าที่จะเข้าสู่ระบบ RateSetter บ่อยนักเพื่อดูว่ามีเงิน 2 ปอนด์ที่นี่หรือ 5 ปอนด์ที่จะถอนออก และถ้าเราไม่เข้าสู่ระบบ เงินก็จะถูกยืมออกอย่างรวดเร็วอีกครั้ง
นี่คือจุดรวมของบอท: สังเกตทันทีเมื่อมีเงินไม่กี่ปอนด์ที่ไม่ได้ "ยืม" และถอนออกก่อนที่จะไปเชื่อมโยงกับผู้ยืมรายอื่น
หากมีเงินอยู่ใน "On Holding" หรือ "On Market" ชั่วคราว: บอทจะคลิกปุ่ม "ถอนเงิน" ให้คุณโดยอัตโนมัติ จากนั้นป้อนจำนวนเงินสูงสุดที่เป็นไปได้ในหน้าจอถัดไป (อันที่จริงมันจะป้อนจำนวนเงินสองสามเพนนีน้อยกว่าจำนวนเงินสูงสุด – ดูส่วน "การระบุการถอนเงิน" ด้านล่าง) สุดท้ายนี้ บอทจะส่งอีเมลถึงคุณเพื่อยืนยันทุกครั้งที่ทำการถอนเงิน
บอทควรทำงานบนคอมพิวเตอร์ของคุณต่อไป โดยใช้เวลาประมาณหนึ่งนาทีในการคลิกหนึ่งรอบ เมื่อสิ้นสุดรอบ ระบบจะกลับไปที่หน้า 'ภาพรวม' เพื่อตรวจสอบการเปลี่ยนแปลงใดๆ จะตรวจสอบและสามารถถอนออกจากบัญชีทั้งหมดได้ (เช่น บัญชี "ทุกวัน" และบัญชี "ISA") ของคุณ
เพื่อหลีกเลี่ยงการถูกครอบงำหรือสับสนจากการถอนเงินจำนวนเล็กน้อย (~ £ 2) จำนวนมากที่อุดตันรายการเคลื่อนไหวของบัญชีธนาคารของคุณ บอทจะกำหนดจำนวนเพนนีให้ตรงกับจำนวนการถอนเงิน
ตัวอย่างเช่น หากสามารถถอนเงินได้ 25.40 ปอนด์ และบอทต้องการถอนเงินหมายเลข 12 จะมีการถอนออกเพียง 25.12 ปอนด์เท่านั้น ไม่ใช่จำนวนเต็ม 25.40 ปอนด์ที่มีอยู่
ครั้งต่อไปบอทจะถอนเงิน £xx.13
ซึ่งจะทำให้ระบุจำนวนเงินที่ถอนเข้าบัญชีธนาคารของคุณได้ง่ายขึ้น
จากประสบการณ์ของผมที่ใช้บอทนี้ การถอนเงิน 25 ครั้งแรกส่วนใหญ่อยู่ที่ประมาณ 2 ปอนด์ อันหนึ่งประมาณ 200 ปอนด์ จากนั้นอันหนึ่งคือ ~ 7,900 ปอนด์ บูม ประสิทธิภาพของบอทได้รับการตรวจสอบแล้ว – สิ่งนี้ถูกถอนออกทันที
หากคุณต้องการดูเฉพาะช่วงเวลาที่มีจำนวนเงินที่เหมาะสมที่จะถอนออก คุณควรปรับค่า 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 > การตั้งค่า แล้วคลิกขั้นสูง จากนั้นเลือก “แสดงเมนูพัฒนาในแถบเมนู”)
ในเมนู "พัฒนา" คลิกเพื่อ "อนุญาตการทำงานอัตโนมัติระยะไกล"
สคริปต์นี้ (ซีลีเนียม) ใช้งานได้กับ Chrome, Firefox, Safari (หรืออื่น ๆ ) ข้อดีของ Safari คือมีการติดตั้งไดรเวอร์เว็บไว้ล่วงหน้าบน Mac แต่การติดตั้งไดรเวอร์ Selenium ล่วงหน้าสำหรับเบราว์เซอร์อื่นก็ทำได้ง่ายเช่นกัน
หากคุณใช้สิ่งอื่นนอกเหนือจาก Safari: ปฏิบัติตามเอกสารซีลีเนียมเพื่อดาวน์โหลดไดรเวอร์สำหรับเบราว์เซอร์ที่คุณต้องการ
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
(ฉันกำลังพิมพ์สิ่งนี้จากหน่วยความจำ - คุณอาจต้องขึ้น/ลงในโฟลเดอร์เพื่อติดตั้งข้อกำหนด 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
เพื่อเปิดใช้งานสภาพแวดล้อมหลามเสมือนก่อนที่จะเปิดตัวเชลล์หลาม
หากคุณอยู่ในโฟลเดอร์ rs-withdraw-bot
คำสั่งคือ:
. ../bin/activate # .. goes up to parent folder
เปิดเปลือกหลาม
python
ในเปลือกหลาม
>>> from withdraw import keep_trying
อย่าคัดลอกและวาง >>>
นั่นเป็นเพียงเบาะแสที่มองเห็นได้ว่าคุณอยู่ใน "python shell"
ตอนนี้หน้าต่าง 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
บางทีคุณอาจปิดคอมพิวเตอร์หรือจำเป็นต้องรีสตาร์ทบอทใหม่
ในกรณีนี้ ให้ปรับ 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 ในทางที่ผิด จริงๆ แล้วการรันสคริปต์อาจถูกห้ามโดยข้อกำหนดในการให้บริการของ RateSetter – โปรดตรวจสอบด้วยตัวเอง
เพื่อนคนใดก็ตามที่มีความรู้คร่าวๆ เกี่ยวกับ Python ควรสามารถช่วยคุณให้สคริปต์นี้ทำงานบนคอมพิวเตอร์ของคุณได้ มีโอกาสที่พวกเขาจะปรับปรุงให้ดีขึ้นด้วยซ้ำ นี่เป็นเรื่องคร่าวๆ และพร้อมมากอย่างที่เป็น!
CC-BY-NC – ไม่ใช้เพื่อการค้า