Passives Einkommen durch automatisierte Paidmails mit Python

Passives Einkommen durch automatisierte Paidmails mit Python
Bildrechte: Foto von Markus Spiske von Pexels

Vor einigen Monaten habe ich mich mal an das Thema Paidmails gewagt. Wer jetzt denkt ich sei verrückt geworden, wird in diesem Artikel vielleicht eines Besseren belehrt… Vielleicht.


Immer auf der Suche nach Möglichkeiten nebenbei möglichst passiv Geld zu verdienen bin ich auf das Thema bezahlte Umfragen und Paidmails gestoßen. Letzteres ist so primitiv, dass es schon wieder seinen Reiz hat. Wer Paidmails nicht kennt: Es geht darum regelmäßig E-Mails zu lesen und dafür Geld zu erhalten. Dabei gibt es bei den Paidmail Anbietern diverse Verdienstmöglichkeiten. Die wohl einfachste Verdienstmöglichkeit ist einfach sein E-Mail Postfach zuspammen zu lassen und die Mails bestätigen. Alternativ kann man auch im Portal der Paidmail Anbieter sich durch sogenannte Paidlinks, Extrabanner und Forcedtexte klicken und diese bestätigen. Das Bestätigen ist lediglich ein Timer der Abläuft, solange bis der abgelaufen ist, muss man auf der Website bleiben. Danch dem ablaufen des Timer erhält man seine Punkte gutgeschrieben. Ab einem gewissen Betrag (meistens 5 Euro) kann man sich die Einnahmen auszahlen lassen. Das Prinzip ist so primitiv und banal das man es einfach automatisieren kann. Die meisten Paidmail Anbieter nutzen nämlich alle das gleiche System (Paidmail Pro 3) und haben einfach alle ein anderes Design. Über die Google Suchmaschine kann man nach die Anbieter ganz einfach finden indem man eingibt:

intext: Paidmail+Pro+3.0

Da in der Regel die Version von Paidmail immer im Footer der Websites mit angegeben ist. 

Doch wer setzt sich schon den ganzen Tag vor den Rechner, um hunderte Links zu klicken um dafür am Tag 10 Cent zu verdienen? Hoffentlich niemand! Als programmierer habe ich mich einfach an einen Python Bot gesetzt, der zum einen meine E-Mails über IMAP abruft und diese bestätigt. Zum anderen gibt es einen Bot der sich um die Paidinks (Forcedtext, Extrabanner etc.) kümmert.

Für die Paidmails nutze ich ein dedziertes Postfach. Ich möchte ja nicht hunderte Paidmails in mein normales Postfach bekommen. Nach dem Abrufen der Paidmails werden die E-Mail gelöscht. 

Der andere Bot der sich um die Paidlinks kümmert, loggt sich regelmäßig bei den Paidmail Betreiber ein, identifiziert die Paidlinks und Paidbanner und bestätigt auch diese. Beide Bots laufen bei mir auf einem Rasperry Pi 4 auf dem auch mein IPFire läuft. IPFire blockt dann auch direkt alle Werbebanner und Tracker. 

Monatsverdienst für November 2020

Im letzten Monat hat mein Bot 4,54 € mit 8 Paidmail Anbietern verdient. Und dabei bestätigt der Bot sowohl Paidmails wie auch alle Paidlinks! Lohnenswert? Eher nicht. Besonders nicht wenn ich jetzt noch extra dafür Strom bezahlen müsste oder Hardware anschaffen. Da meine IPFire sowieso läuft, kann der Bot fröhlich weiter nebenher Geld generieren. 4,54 € im Monat sind zwar nicht viel, aber aufs Jahr gerechnet immerhin 50 Euro durch nichts tun.

Paidmail Bot Auswertung

Der Python Bot zum bestätigen von E-Mails

from imbox import Imbox
import time
from bs4 import BeautifulSoup
import webbrowser
import random
import time
import os

isLinux = False
browserExe = "chromium"

MAX_OPENED_TABS = 10

#windows
if not isLinux:
    browserExe = "chrome.exe"

while(True):
    with Imbox('imap.gmx.net',
            username='<ENTER-USERNAME>',
            password='<ENTER-PASSWORD>',
            ssl=False,
            ssl_context=None,
            starttls=True) as imbox:

        #all_inbox_messages = imbox.messages(unread=True)
        all_inbox_messages = imbox.messages()

        opened = 0

        for uid, message in all_inbox_messages:
            print(message.subject)
            print(message.body)
            email_body = str(message.body)
            soup = BeautifulSoup(email_body, 'html.parser')
            urls = soup.findAll ('a')
            for url in urls:
                if url['href'].find("pmail.php") == -1:
                    print('Not a paidlink')
                else:
                    print(url['href'])
                    webbrowser.open_new_tab(url['href'])
                    opened = opened+1
                    imbox.delete(uid)
                    wait = random.randint(0,15)
                    while(wait > 0):
                        wait = wait-1
                        time.sleep(1)
                        print("Warte: " + str(wait))

                        if (opened >= MAX_OPENED_TABS):
                            opened = 0
                            wait = 120
                            while(wait > 0):
                                wait = wait-1
                                time.sleep(1)
                                print("Warte auf Browser Reset " + str(wait))
                            if not isLinux:
                                os.system("taskkill /f /im "+browserExe)
                            else:
                                os.system("pkill "+browserExe)

    wait = 43200 # Warte 12 Stunden wenn alle Mails abgearbeitet wurden
    while(wait > 0):
        wait = wait-1
        time.sleep(1)
        print("Warte 12 Stunden auf neue Mails - Restcountdown: " + str(wait))
from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
from selenium.common import exceptions
import time
import requests
from bs4 import BeautifulSoup
import smtplib
import datetime
import mysql.connector
import random
from selenium.webdriver.chrome.options import Options
import os

class Paidmailer:
    base_url = ""
    login_url = ""
    user_id = ""
    user_pwd = ""

    def __init__(self, base, login, userid, password):
        self.base_url = base
        self.login_url = login
        self.user_id = userid
        self.user_pwd = password


def run(pm, linkUrl, SearchTag, wait = 125, maxtabs = 5):
    driver = webdriver.Chrome()
    driver.get(pm.base_url)
    driver.delete_all_cookies()
    time.sleep(30)

    try:
        dict = {'userid': pm.user_id, 'userpsw': pm.user_pwd, 'login_members': 'Einloggen'}
        cookieInject =  {'cookie_ok': '1'}
        session = requests.session()
        response = session.post(pm.login_url, data=dict, cookies=cookieInject)
        if (response.ok):
            # ForcedBanner Identiifzieren
            response_text = session.get(pm.base_url + linkUrl, cookies=cookieInject)
            soup = BeautifulSoup(response_text.content, 'html.parser')

            tags=soup.findAll('a', href=True)
                                
            # Cookies
            first = True 

            for cookie in session.cookies:  # session cookies
                print("name:" + cookie.name + " value:" + cookie.value + " domain:" + cookie.domain + " secure:" + str(cookie.secure))
                cookie_dict = {'domain': cookie.domain, 'name': cookie.name, 'value': cookie.value, 'secure': cookie.secure}
                if cookie.expires:
                    cookie_dict['expiry'] = cookie.expires
                if cookie.path_specified:
                    cookie_dict['path'] = cookie.path

                driver.add_cookie(cookie_dict)
            if first:
                first = False #test session cookie überspringen
            else:
                driver.add_cookie(cookie_dict)

            cookie_dictInject = { 'name': 'cookie_ok', 'value': '1' }
            driver.add_cookie(cookie_dictInject)

            i = 0
            for a in tags:
                try:
                    if a['href'].find("#") != -1:
                        #if a.contents[0].contains("Guthaben"): # Gültig für Powermails zumindest
                        print(a.contents[0].strip())
                except:
                    pass

                if a['href'].find(SearchTag) != -1:
                    i = i+1
                    print(a['href'])

                    driver.execute_script("window.open('','_blank');")
                    driver.switch_to.window(driver.window_handles[i])

                    driver.get(pm.base_url + '/members/' + a['href'])

                    t = 1

                    if i >= maxtabs:
                        t = wait
                
                    while (t >= 0):
                        t = t-1
                        print("Waiting: " + str(t))
                        time.sleep(1)

    except exceptions.InvalidCookieDomainException as ex:
        print(ex.message)
    except Exception as e:
        print(e)
    finally:
        time.sleep(60)
        driver.close()
        os.system("pkill chromium")


def bootstrap(pm):
    try:
        if DoPaidmail:
            run(pm, "/members/pmail.php", 'pmail.php?', 135, 4)
            time.sleep(30)

        if DoForcedBanner:
            run(pm, "/members/forcedbanner.php", 'forcedbanner2.php?')
            time.sleep(30)

        if DoForcedText:
            run(pm, "/members/forcedtext.php", 'forcedtext2.php?', 60, 5)
            time.sleep(30)

        if DoExtraBanner:
            run(pm, "/members/extrabanner.php", 'extrabanner2.php?', 90, 1)
            time.sleep(30)

    except Exception as e:
        print(e)


headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"}

DoForcedBanner = True
DoPaidmail = False
DoForcedText = True
DoExtraBanner = True

paidmailers = []
paidmailers.append(Paidmailer("http://www.markis-mailer.eu", "http://www.markis-mailer.eu/index.php", "<ENTER-USER-ID>", "<ENTER-USER-PASSWORD>"))
paidmailers.append(Paidmailer("https://www.talk-mailer.de", "https://www.talk-mailer.de/index.php", "<ENTER-USER-ID>", "<ENTER-USER-PASSWORD>"))
paidmailers.append(Paidmailer("http://www.mailbang.de", "http://www.mailbang.de/index.php", "<ENTER-USER-ID>", "<ENTER-USER-PASSWORD>"))
paidmailers.append(Paidmailer("http://www.powermails.de", "http://www.powermails.de/login.php", "<ENTER-USER-ID>", "<ENTER-USER-PASSWORD>"))
paidmailers.append(Paidmailer("http://www.euros-4-mails.de", "http://www.euros-4-mails.de/login.php", "<ENTER-USER-ID>", "<ENTER-USER-PASSWORD>"))

lastIndex = -1

while True:
    
    i = random.randrange(0, len(paidmailers))
    if (lastIndex == -i): #if next paidmailer is the same as before
        continue
    
    
    lastIndex = i
    bootstrap(paidmailers[i])
    os.system("pkill chromium")

Fazit

Wem kann ich Paidmails empfehlen? Manuell niemanden. Ansonsten alle Personen die sowieso Hardware daheim stehen haben welche rund um die Uhr läuft. Selbst wenn ich mir zum aktuellen Zeitpunkt einen Raspberry Pi 4 kaufe für Paidmails brauche ich ein ganzes Jahr um die Kosten wieder einzuholen. Da meine IPFire sowieso läuft, lass ich das ganze Mal laufen und werde hier auf meinem Blog regelmäßig Berichten.