RateSetter est une startup qui proposait des comptes d'épargne basés sur des prêts peer-to-peer. Mais ils ont rencontré des difficultés financières et maintenant vous ne pouvez plus retirer votre argent ; il y a un système de file d'attente.
Naturellement, les investisseurs ordinaires ne sont pas contents.
Vous souhaitez retirer autant d'argent que possible de votre compte RateSetter, mais en raison de leur système de file d'attente, vous ne pouvez pas retirer votre argent. Vous avez demandé à « débloquer des fonds », mais il y a des milliers de personnes devant vous. Vous devez vraiment retirer une partie de votre argent au plus vite. Ou encore, vous avez peur que l'entreprise fasse faillite, alors vous préférez simplement récupérer votre argent !
"Le temps que mettent les investisseurs pour accéder à leurs fonds est plus long que d'habitude" ... cela peut prendre des mois ! ?
L'objectif est de vérifier périodiquement votre compte RateSetter et de retirer fréquemment de petites sommes d'argent.
Après avoir exécuté le script pendant environ deux semaines, le robot a effectué 40 retraits. La plupart des retraits étaient proches du minimum (environ 2 £), mais nous avons effectué un retrait d'environ 7 900 £. Deux autres dépassaient les 100 £.
En raison du fonctionnement de RateSetter, l’argent circule fréquemment entre les comptes.
Le montant de votre argent « En prêt » change périodiquement.
Aperçu/faille clé : Si quelques euros se trouvent temporairement dans le « Compte de dépôt » ou « Sur le marché », nous pouvons retirer cet argent immédiatement. Il s’agit généralement d’une petite quantité, comme quelques kilos seulement – mais cela semble varier.
Cela ne vaut pas la peine de se connecter très souvent à RateSetter pour vérifier s'il y a 2 £ ici, ou 5 £ là, à retirer. Et si nous ne nous connectons pas, l’argent est à nouveau rapidement prêté.
C'est tout l'intérêt du bot : repérer immédiatement quand il y a quelques euros qui ne sont pas « prêtés », et les retirer avant qu'ils ne soient liés à un autre emprunteur.
Si de l'argent se trouve temporairement dans « En attente » ou « Sur le marché » : le robot cliquera automatiquement sur le bouton « Retirer » pour vous, puis saisira le montant maximum possible sur l'écran suivant. (En fait, il saisira un montant inférieur de quelques centimes au montant maximum – voir la section « Identifier les retraits » ci-dessous.) Enfin, le robot vous enverra un e-mail pour confirmer chaque fois qu'un retrait est effectué.
Le bot devrait continuer à fonctionner sur votre ordinateur, en prenant environ une minute pour effectuer un cycle de clics. À la fin du cycle, il revient à la page « Aperçu », pour vérifier tout changement. Il vérifie et peut effectuer des retraits sur tous les comptes (par exemple, votre compte « Everyday » et votre compte « ISA ».)
Pour éviter d'être submergé/dérouté par un grand nombre de petits retraits (~ 2 £) qui encombrent votre relevé bancaire, le robot définira le nombre de centimes pour qu'il corresponde au numéro de retrait.
Par exemple, si 25,40 £ deviennent disponibles pour le retrait et que le robot cherche à effectuer le retrait numéro 12, alors seulement 25,12 £ seront retirés – et non la totalité de 25,40 £ disponible.
La prochaine fois, le bot retirera xx,13 £.
Cela devrait faciliter l’identification des montants de retrait sur votre compte bancaire.
D'après mon expérience d'utilisation de ce robot, la plupart des 25 premiers retraits s'élevaient à environ 2 £. L'un coûtait environ 200 £. Ensuite, l’un coûtait environ 7 900 £. Boum, l’efficacité du bot a été validée – celle-ci a été immédiatement retirée.
Si vous préférez ne surveiller que les moments où il y a une somme d'argent décente à retirer, vous devez ajuster la valeur MIN_PAYOUT
dans config.py
.
Si MIN_PAYOUT = 1.00
, vous pourriez alors avoir des retraits aussi bas que 1,01 £, 1,02 £, 1,03 £, etc.
Parce que le nombre de centimes correspond au numéro de retrait, si MIN_PAYOUT = 2.00
et que nous sommes sur le numéro de paiement 12, mais que seulement 2,05 £ sont disponibles pour le retrait, alors aucun retrait ne sera effectué. (Il faudrait qu'il y ait au moins 2,12 £ disponibles pour retirer.)
Je recommanderais de laisser le MIN_PAYOUT
bas (par exemple, 1,00) pour commencer (afin que vous voyiez le bot aussi actif que possible). Ensuite, si les petits montants de retrait sont gênants, vous pouvez augmenter ce seuil (par exemple jusqu'à 20). Non, si vous apportez des modifications à config.py, vous devez arrêter le bot et le redémarrer pour que les modifications prennent effet.
Activez le menu "Développer".
(Si vous ne voyez pas le menu Développer dans la barre de menus, choisissez Safari > Préférences, cliquez sur Avancé, puis sélectionnez « Afficher le menu Développement dans la barre de menus ».)
Dans le menu "Développer", cliquez sur "Autoriser l'automatisation à distance".
Ce script (Selenium) fonctionne avec Chrome, Firefox, Safari (ou autres). L'avantage de Safari est que le pilote web est préinstallé sur Mac. Mais la préinstallation du pilote Selenium pour d’autres navigateurs est également très simple.
Si vous utilisez autre chose que Safari : suivez la documentation Selenium pour télécharger le pilote de votre navigateur préféré.
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)
Personnellement, je préfère utiliser Chrome car c'est moins agité (par exemple, effectuer un zoom arrière ou redimensionner la fenêtre).
Exécutez ce qui suit dans votre terminal :
Créer un environnement virtuel avec python 3
virtualenv rsbot -p python3
cd rsbot
. bin/activate
Téléchargez le code sur votre ordinateur
git clone https://github.com/markitics/ratesetter-withdraw-bot
Installer les dépendances
cd ratesetter-withdraw-bot
pip install -r requirements.txt
(Je tape ceci de mémoire - vous devrez peut-être monter/descendre dans un dossier pour que le fichier requirejs.txt soit correctement installé dans l'environnement virtuel.)
Vous devez personnaliser :
SEND_EMAILS
sur False
pour ne pas vous soucier des e-mails. Au fur et à mesure que le script s'exécute, il y a une sortie imprimée de chaque tentative, vous n'avez donc pas vraiment besoin d'e-mails si vous préférez.Vous pouvez éventuellement personnaliser :
Vous devez créer un nouveau fichier appelé config.py
Créez un nouveau fichier config.py, à côté de config.example.py. Autrement dit, le nouveau fichier doit se trouver dans le même répertoire que config.example.py
Mettez votre propre email et votre mot de passe ici. Laissez config.example.py intact, pour référence.
Ne soyez pas intimidé !
Si vous n'avez pas besoin d'alertes par e-mail, le config.py
peut être assez simple :
# 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
Si vous souhaitez des alertes par e-mail , votre fichier config.py
terminé ressemblera à ceci :
# 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 ])
Qui doit recevoir les emails d’alerte ?
WEBMASTER_EMAIL
recevra les alertes "Le robot a rencontré un problème" et périodiquement "Le robot est toujours en cours d'exécution". ACCOUNT_OWNER_EMAIL
recevra les e-mails "Un retrait réussi a été effectué".
Supprimez (ou commentez) l'option 1 ou l'option 2 de 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])
Chaque jour où vous souhaitez démarrer le code, vous devez d'abord le faire . bin/activate
pour activer l'environnement python virtuel, avant de lancer le shell python.
Si vous êtes dans le dossier rs-withdraw-bot
, la commande est :
. ../bin/activate # .. goes up to parent folder
Ouvrez le shell python
python
Dans le shell python,
>>> from withdraw import keep_trying
Ne copiez pas et collez le >>>
– c'est juste un indice visuel que vous êtes dans le "shell python".
Une fenêtre Safari (ou Chrome) devrait maintenant se lancer. S'il semble que Safari soit prêt à être contrôlé, continuez et exécutez la commande master pour démarrer le bot :
>>> keep_trying() # will send confirmation email once it starts up
OU
>>> keep_trying(initial_email=False) # default is True
Si initial_email=True
, il vous enverra un e-mail après 1 tentative, afin que vous puissiez vérifier que l'e-mail est envoyé correctement.
Par défaut, pour confirmer qu'il n'a pas planté, le robot vous enverra à nouveau un e-mail toutes les 200 tentatives (chaque EMAIL_EVERY_N_ATTEMPTS
tentatives) – juste pour vous faire savoir qu'il est vivant et qu'il fonctionne. Vous pouvez modifier ce paramètre dans config.py
.
Peut-être éteignez-vous votre ordinateur ou devez-vous redémarrer le bot.
Dans ce cas, ajustez le NEXT_PAYOUT_NUMBER
dans config.py
pour qu'il corresponde au prochain numéro de paiement.
Les paiements sont numérotés 1, 2, 3, etc.
Les montants des versements comportent le nombre de centimes correspondant, pour faciliter l'identification des retraits sur votre relevé bancaire.
Par exemple, les premiers retraits pourraient être : 29,01 £, 2,02 £, 14,03 £, 210,04 £, etc.
Si vous redémarrez le bot après le retrait numéro 4, vous devez définir NEXT_PAYOUT_NUMBER = 5
dans config.py
. Le prochain montant de retrait sera alors de XX,05 £.
Vous devez configurer un filtre afin que les e-mails d'alerte ne deviennent pas du spam.
https://www.jotform.com/help/404-how-to-prevent-emails-from-landing-in-gmail-s-spam-folder
Il est facile d'avoir deux fenêtres Chrome distinctes contrôlées par deux robots distincts.
Lancez le premier, puis ouvrez une nouvelle fenêtre de terminal.
Ajustez les informations de connexion dans config.py
pour refléter le deuxième compte :
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
Enregistrez vos modifications dans la configuration avant d'exécuter la commande python
.
[email protected]
Twitter @MbyM
C'était un projet amusant ad hoc, ma première fois en jouant avec Selenium. Je n'ai pas l'intention de maintenir cela ou d'offrir un soutien à des étrangers.
Ne pas utiliser à des fins commerciales.
Ne réduisez pas les périodes d'attente ; n’abusez pas du site Web RateSetter. En fait, l'exécution du script pourrait en fait être interdite par les conditions de service de RateSetter – vérifiez cela vous-même.
Tout ami ayant une connaissance superficielle de Python devrait pouvoir vous aider à exécuter ce script sur votre ordinateur. Il y a de fortes chances qu'ils l'améliorent même – c'est très approximatif tel quel !
CC-BY-NC – pas pour un usage commercial.