Seite 1 von 1

Pycurl Installation

Verfasst: Montag 30. September 2013, 20:15
von flyxer
Hallo,
Ich habe ein Problem mit der Pycurl installation. Da ich mich noch nicht oft mit Python auseinandergesetzt habe, wirft es mich vor ein unverständliches Problem. Ich habe ein Script "runtergeladen" und möchte es gerne zum laufen bringen, allerdings steht auf der gleichen Seite, dass wenn der Fehler "Syntax Error" entsteht, Pycurl nicht installiert ist. Daraufhin habe ich natürlich Pycurl runtergeladen und den Installer ausgeführt, dann erschien ein kurzes cmd Fenster und dann wars auch schon vorbei. Geändert hat sich an dem Fehler leider auch nichts.
Meine Frage: was hab ich falsch gemacht? und ein runtergeladenes Script muss ich doch in Python Idle ausführen, oder? :oops:

Hier einmal das Script:

Code: Alles auswählen

#!/usr/bin/python
import os
import pycurl
import cStringIO
import re
import random
import time

username = "username"
password = "password"
hashtags = ["design", "ios"]

def login():
    try:
        os.remove("pycookie.txt")
    except:
        pass

    buf = cStringIO.StringIO()
    c = pycurl.Curl()
    c.setopt(pycurl.URL, "http://web.stagram.com")
    c.setopt(pycurl.COOKIEFILE, "pycookie.txt")
    c.setopt(pycurl.COOKIEJAR, "pycookie.txt")
    c.setopt(pycurl.WRITEFUNCTION, buf.write)
    c.setopt(pycurl.FOLLOWLOCATION, 1)
    c.setopt(pycurl.ENCODING, "")
    c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)")
    c.perform()
    curlData = buf.getvalue()
    buf.close()

    clientid = re.findall(ur"href=\"https:\/\/api.instagram.com\/oauth\/authorize\/\?client_id=([a-z0-9]*)&redirect_uri=http:\/\/web.stagram.com\/&response_type=code&scope=likes\+comments\+relationships\">LOG IN",curlData)
    instagramlink = re.findall(ur"href=\"([^\"]*)\">LOG IN",curlData)




    buf = cStringIO.StringIO()
    c = pycurl.Curl()
    c.setopt(pycurl.URL, instagramlink[0])
    c.setopt(pycurl.COOKIEFILE, "pycookie.txt")
    c.setopt(pycurl.COOKIEJAR, "pycookie.txt")
    c.setopt(pycurl.WRITEFUNCTION, buf.write)
    c.setopt(pycurl.FOLLOWLOCATION, 1)
    c.setopt(pycurl.ENCODING, "")
    c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)")
    c.perform()
    curlData = buf.getvalue()
    buf.close()

    postaction = re.findall(ur"action=\"([^\"]*)\"",curlData)
    csrfmiddlewaretoken = re.findall(ur"name=\"csrfmiddlewaretoken\" value=\"([^\"]*)\"",curlData)





    postdata = 'csrfmiddlewaretoken='+csrfmiddlewaretoken[0]+'&username='+username+'&password='+password

    buf = cStringIO.StringIO()
    c = pycurl.Curl()
    c.setopt(pycurl.URL, "https://instagram.com"+postaction[0])
    c.setopt(pycurl.COOKIEFILE, "pycookie.txt")
    c.setopt(pycurl.COOKIEJAR, "pycookie.txt")
    c.setopt(pycurl.WRITEFUNCTION, buf.write)
    c.setopt(pycurl.FOLLOWLOCATION, 1)
    c.setopt(pycurl.ENCODING, "")
    c.setopt(pycurl.SSL_VERIFYPEER, 0)
    c.setopt(pycurl.REFERER, "https://instagram.com/accounts/login/?next=/oauth/authorize/%3Fclient_id%3D"+clientid[0]+"%26redirect_uri%3Dhttp%3A//web.stagram.com/%26response_type%3Dcode%26scope%3Dlikes%2Bcomments%2Brelationships")
    c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)")
    c.setopt(pycurl.POST, 1)
    c.setopt(pycurl.POSTFIELDS, postdata)
    c.setopt(pycurl.POSTFIELDSIZE, len(postdata))
    #c.setopt(pycurl.VERBOSE, True)
    c.perform()
    curlData = buf.getvalue()
    buf.close()



def like():
    likecount = 0
    sleepcount = 0
    for tag in hashtags:
        nextpage = "http://web.stagram.com/tag/"+tag+"/?vm=list"
        #enter infinite poke loop
        while nextpage != False:
            buf = cStringIO.StringIO()
            c = pycurl.Curl()
            c.setopt(pycurl.URL, nextpage)
            c.setopt(pycurl.COOKIEFILE, "pycookie.txt")
            c.setopt(pycurl.COOKIEJAR, "pycookie.txt")
            c.setopt(pycurl.WRITEFUNCTION, buf.write)
            c.setopt(pycurl.FOLLOWLOCATION, 1)
            c.setopt(pycurl.ENCODING, "")
            c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)")
            c.perform()
            curlData = buf.getvalue()
            buf.close()

            nextpagelink = re.findall(ur"<a href=\"([^\"]*)\" rel=\"next\">Earlier<\/a>",curlData)
            if len(nextpagelink)>0:
                nextpage = "http://web.stagram.com"+nextpagelink[0]
            else:
                nextpage = False

            likedata = re.findall(ur"<span class=\"like_button\" id=\"like_button_([^\"]*)\">",curlData)
            if len(likedata)>0:
                for imageid in likedata:
                    repeat = True
                    while repeat:
                        randomint = random.randint(1000,9999)

                        postdata = 'pk='+imageid+'&t='+str(randomint)
                        buf = cStringIO.StringIO()
                        c = pycurl.Curl()
                        c.setopt(pycurl.URL, "http://web.stagram.com/do_like/")
                        c.setopt(pycurl.COOKIEFILE, "pycookie.txt")
                        c.setopt(pycurl.COOKIEJAR, "pycookie.txt")
                        c.setopt(pycurl.WRITEFUNCTION, buf.write)
                        c.setopt(pycurl.FOLLOWLOCATION, 1)
                        c.setopt(pycurl.ENCODING, "")
                        c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)")
                        c.setopt(pycurl.POST, 1)
                        c.setopt(pycurl.POSTFIELDS, postdata)
                        c.setopt(pycurl.POSTFIELDSIZE, len(postdata))
                        #c.setopt(pycurl.VERBOSE, True)
                        c.perform()
                        postData = buf.getvalue()
                        buf.close()
                        if postData == '''{"status":"OK","message":"LIKED"}''':
                            likecount += 1
                            print "You liked #"+tag+" image "+imageid+"! Like count: "+str(likecount)
                            repeat = False
                            sleepcount = 0
                        else:
                            sleepcount += 1
                            print "Your account has been rated. Sleeping on "+tag+" for "+str(sleepcount)+" minute(s). Liked "+str(likecount)+" photo(s)..."
                            time.sleep(60)

def main():
    login()
    like()

if __name__ == "__main__":
    main()

Re: Pycurl Installation

Verfasst: Montag 30. September 2013, 20:23
von BlackJack
@flyxer: Einen `SyntaxError` kann man nicht dadurch beseitigen das man ein zusätzliches Modul installiert. Das ist ein syntaktischer Fehler im Quelltext. Entweder weil man die falsche Python-Version verwendet — der Quelltext ist für Python 2.x, oder falls es nicht an der Python-Version liegt, in dem man den Fehler beseitigt.

Re: Pycurl Installation

Verfasst: Montag 30. September 2013, 20:37
von flyxer
Okay, vielen Dank!
Jetzt, wo ich die richtige Python Version habe, stellt sich mir immernoch das Problem mit dem Pycurl Modul in den Weg.
Jetzt bekomme ich nämlich folgende Meldung:
Bild
Ich möchte eure Nerven nicht überstrapazieren, aber weiß vielleicht auch da jemand eine Lösung?

Edit: das Foto wird bei mir nicht angezeigt, hier ein anderer Link
Bild

http://s1.directupload.net/images/130930/4uwbpn42.jpg

Re: Pycurl Installation

Verfasst: Montag 30. September 2013, 21:39
von BlackJack
@flyxer: Wie bist Du denn jetzt auf Python 2.2 gekommen? Die ist mehr als *10* Jahre alt. Die aktuelle 2er-Version ist 2.7.

Wenn `pycurl` verwendet wird, müsstest Du das installieren. Da das Modul eine Schnittstelle zu einer C-Bibliothek darstellt solltest Du Dir für Windows etwas vorkompiliertes suchen. So etwas selber zu kompilieren macht unter Windows nicht wirklich Spass, zumindest wenn man nicht sowieso schon einen passenden C-Compiler installiert hat und sich damit ein wenig auskennt.

Statt eines Bildschirmfotos hättest Du übrigens auch einfach den Text hier reinkopieren und in Code-Tags setzen können.

Edit: Skripte/Programme haben in dem Python-Verzeichnis übrigens nichts zu suchen.

Re: Pycurl Installation

Verfasst: Dienstag 1. Oktober 2013, 21:14
von flyxer
Sooooo, erstmal wieder vielen Dank!
Ich glaube ich bin der Sache etwas näher gekommen!
Ich habe kein Syntax Error mehr, sondern eine andere schöne Fehlermeldung...

Code: Alles auswählen

ython 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 

Traceback (most recent call last):
  File "C:/Python27/like", line 146, in <module>
    main()
  File "C:/Python27/like", line 142, in main
    login()
  File "C:/Python27/like", line 47, in login
    c.perform()
error: (60, 'SSL certificate problem: unable to get local issuer certificate')
>>> 
Ich hab jetzt die 2.7er Version runtergeladen und die kompilierte Version dafür habe ich mir dann http://www.lfd.uci.edu/~gohlke/pythonlibs/ hier runtergeladen..
Soweit müsste das auch geklappt haben, da ich ja jetzt einen anderen Fehler anstatt "syntax errer" habe.
Könnte mir freundlicherweise nochmal einer helfen?
Ich weiß ich bin anstrengend, aber um des guten Menschen willen... :D

Re: Pycurl Installation

Verfasst: Mittwoch 2. Oktober 2013, 11:18
von jerch
@flyxer:
Also ein bisschen Mühegeben mit der Interpretation von Fehlermeldung und Nachschlagen kannst Du doch bestimmt selbst. Wahrscheinlich fehlt Dir ein Zwischenzertifikat in der Zertifikatskette. Ist jetzt nur geraten, also ran die Doku von pycurl bzw. Suchmaschine Deiner Wahl ;)