ich verzweifel hier gerade an einer an sich einfachen Sache. Um ein wenig mit urllib2 rumzuspielen hab ich mir gedacht ich bau mal ein Skript was automatisch einen Tipp auf https://millionenklick.web.de abgeben kann. Das rumspielen ist auch der Grund warum ichs an einigen Stelle evtl. etwas übertrieben habe und jede Menge Quatsch mit den Headern veranstallte. Das soll jetzt aber erstmal nicht weiter stören.
Das Problem ist das der letzte aufruf von urllib2.urlopen() mich immer auf die Seite www.web.de führt und nicht wie es normalerweise sein sollte auf die Seite mit der Werbung. Das ganze ist etwas komplizierter das System auf der Seite führt einen dort mit 2 HTTP Error 302 auf die richtige Seite. Laut Dokumentation folgt urllib2 diesen Weiterleitungen ja einfach. Etwas anderes dürfte ja auch ein Browser nicht machen.
Noch etwas macht mich stutzig. Es gibt nämlich das Programm http://millionenklick.sourceforge.net/ (eine Java implementierung die genau das gleiche macht). Wenn man dort in den Quelltext guckt http://millionenklick.sourceforge.net/xref/index.html stellt man fest das dass Programm im Prinzip genauso funktioniert wie meine Python Implementierung. Der Unterschied ist das es dort einfach funktioniert.
Ich hoffe mal das mir irgendwer hier weiterhelfen kann. Ich habe nämlich keine Ahnung mehr woran das noch liegen könnte.
Hier der Code:
Code: Alles auswählen
#!/bin/python
#-*- coding: utf-8 -*-
import urllib
import urllib2
import re
import time
import os.path
from random import random, seed
from functions import *
import cookielib
url = 'https://millionenklick.web.de/spielen_ohne_js'
headers = {
'User-Agent' : 'Mozilla/5.0 (X11; U; Linux i686; de; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8',
'Accept' : ' text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
'Accept-Language' : 'de-de,de;q=0.8,en-us;q=0.5,en;q=0.3',
'Accept-Encoding' : 'gzip,deflate',
'Accept-Charset' : 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'Keep-Alive' : '300',
'Connection' : 'keep-alive',
'Referer' : 'https://millionenklick.web.de/spielen_ohne_js',
}
COOKIEFILE = 'cookies.lwp'
cookies = cookielib.LWPCookieJar()
if os.path.isfile(COOKIEFILE):
cookies.load(COOKIEFILE)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies))
urllib2.install_opener(opener)
# Zufällig langes warten
#n = int((random()*10000000)%(18000))
#time.sleep(n)
# --- Schritt 1 ---
response=urllib2.urlopen(urllib2.Request(url,None,headers))
text=unzip(response)
re_url = response.geturl()
data={}
data = extract_postelements(text, 0);
data['username']='ganz'
data['password']='geheim'
form = extract_form(text, 0)
url = extract_action(form)
headers['Referer'] = re_url
n = int((random()*1000)%(20))+5
time.sleep(n)
# --- Schritt 2 ---
response = urllib2.urlopen(urllib2.Request(url, urllib.urlencode(data),headers))
text = unzip(response)
re_url = response.geturl()
headers['Referer'] = re_url
url = re_url + '&zahl=zufallstipp'
n = int((random()*1000)%(20))+5
time.sleep(n)
# --- Schritt 3 ---
response = urllib2.urlopen(urllib2.Request(url,None,headers))
text = unzip(response)
links = extract_links(text)
re_url = response.geturl()
sendlinks = []
for all in links:
if(re.search('insert_event.ng', all)):
attr = all.split(' ')
for liste in attr:
if(re.search('href.?\=.?"', liste)):
sendlinks.append(re.sub('href=','',re.sub('"','',re.sub('\s', '', liste))))
#Anzahl Werbelinks zaehlen
count = 0
for all in sendlinks:
count += 1
#Einen Link auswählen
x = int((random()*100)%(count - 1))
url = sendlinks[x]
headers['Referer'] = re_url
n = int((random()*1000)%(20))+5
time.sleep(n)
print url
# --- Schritt 4 ---
response = urllib2.urlopen(urllib2.Request(url,None,headers))
text = unzip(response)
print 'Here are the cookies received so far:'
for index, cookie in enumerate(cookies):
print index, ': ', cookie
cookies.save(COOKIEFILE)
print text
if response:
print "Tipp erfolgreich abgegeben"