Python - Hatayı İfade Edemiyorum İçeri Girin Lütfen

Arkadaşlar merhaba, hemen alt kısımda görebileceğiniz kodlar programın tek ve ana dosyası. Öncelikle kodları bırakıyorum sonra hatayı tercüme edeceğim. kaynak sahibi @barron4335

# /usr/bin/env Python
# -*-coding:utf-8-*-

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
from selenium.common.exceptions import TimeoutException
from selenium.common.exceptions import WebDriverException as WDE
from selenium.common.exceptions import InvalidArgumentException
from selenium.webdriver.firefox.options import Options

from io import open
import time
import datetime
from datetime import date
import os
import sys

# reload(sys)
# sys.setdefaultencoding("utf-8")

from tkinter import *
import requests
from bs4 import BeautifulSoup
from random import choice
from random import randint


def GetProxy():
    url = 'https://www.sslproxies.org/'
    r = requests.get(url)
    soup = BeautifulSoup(r.content, 'html5lib')
    return choice(list(map(lambda x: x[0] + ':' + x[1], list(zip(list(map(lambda x: x.text, soup.find_all('td')[::8])),
                                                                 (map(lambda x: x.text, soup.find_all('td')[1::8])))))))


def ana2():
    pencere = Tk()
    pencere.title("BCVC BOT")

    l = Label(pencere)
    l.config(text=u"Deneme Sayısı : ")
    l.grid(row=0, column=0)

    global l1

    l1 = Label(pencere)
    l1.config(text=u"")
    l1.grid(row=0, column=1)

    l = Label(pencere)
    l.config(text=u"Denen Link Adresi : ")
    l.grid(row=1, column=0)

    global l2

    l2 = Label(pencere)
    l2.config(text=u"")
    l2.grid(row=1, column=1)

    l = Label(pencere)
    l.config(text=u"Link Başı Denen Proxy Adedi : ")
    l.grid(row=2, column=0)

    global l3

    l3 = Label(pencere)
    l3.config(text=u"")
    l3.grid(row=2, column=1)

    l = Label(pencere)
    l.config(text=u"Şuan Denen Proxy Adresi : ")
    l.grid(row=3, column=0)

    global l4

    l4 = Label(pencere)
    l4.config(text=u"")
    l4.grid(row=3, column=1)

    l = Label(pencere)
    l.config(text=u"Sonuç : ")
    l.grid(row=4, column=0)

    global sonuc

    sonuc = Label(pencere)
    sonuc.config(text=u"")
    sonuc.grid(row=4, column=1)

    global tekrar
    global linkd

    tekrar = int(tekrar.get())
    for tekrars in range(tekrar):
        links = linkd.get()
        filehandle = open('%s.txt' % links, 'r')
        link = [current_place.rstrip() for current_place in filehandle.readlines()]
        url = link[randint(0, 50)]
        l1.config(text=u"" + str(tekrars))
        pencere.update()
        for i in range(1, 11):
            proxy = GetProxy()
            l3.config(text=u"" + str(i))
            pencere.update()

            firefox_capabilities = webdriver.DesiredCapabilities.FIREFOX
            firefox_capabilities['marionette'] = True

            firefox_capabilities['proxy'] = {
                "proxyType": "MANUAL",
                "httpProxy": proxy,
                "ftpProxy": proxy,
                "sslProxy": proxy
            }

            options = Options()
            options.headless = True

            driver = webdriver.Firefox(capabilities=firefox_capabilities, options=options)

            try:
                l4.config(text=u"" + proxy)
                l2.config(text=u"" + url)
                pencere.update()
                driver.get("%s" % url)
                button = driver.find_element_by_xpath('//*[@id="getLink"]')
                time.sleep(7)
                button.click()
                time.sleep(10)
                driver.quit()
                sonuc.config(text=u"" + proxy + " : ~~ BAŞARILI OLDU! ~~")
                pencere.update()
            except:
                driver.quit()
                sonuc.config(text=u"" + proxy + " : ~~ BAŞARISIZ OLDU! ~~")
                pencere.update()
                continue

    pencere.mainloop()


def ana():
    pencere = Tk()
    pencere.title("BCVC BOT")

    l = Label(pencere)
    l.config(text=u"Kaç Defa Proxy Denesin : ")
    l.grid(row=0, column=0)

    global tekrar

    tekrar = Entry(pencere)
    tekrar.grid(row=0, column=1)

    l = Label(pencere)
    l.config(text=u"Denenecek Linklerin Dosyasını Yazınız : ")
    l.grid(row=1, column=0)

    global linkd

    linkd = Entry(pencere)
    linkd.grid(row=1, column=1)

    b1 = Button(pencere, text=u"BOTU BAŞLAT", command=ana2)
    b1.grid(row=2, column=1)

    pencere.mainloop()


ana()

Şimdi program aynı dizinde bulunduğu txt uzantılı dosyanın içerisinden rastgele satırdaki linkleri seçerek sonrada https://www.sslproxies.org adresinden rastgele proxy seçerek giriyor bir süre girdiği linkte takılıp geri çıkıyor. Sonra başka bir link deniyor. Yaptığı işlem bu. Fakat hemen altta vereceğim ana2 fonksiyonunun kısmında bir sıkıntı var.

try:
                l4.config(text=u"" + proxy)
                l2.config(text=u"" + url)
                pencere.update()
                driver.get("%s" % url)
                button = driver.find_element_by_xpath('//*[@id="getLink"]')
                time.sleep(7)
                button.click()
                time.sleep(10)
                driver.quit()
                sonuc.config(text=u"" + proxy + " : ~ BAŞARILI OLDU! ~")
                pencere.update()
            except:
                driver.quit()
                sonuc.config(text=u"" + proxy + " : ~ BAŞARISIZ OLDU! ~")
                pencere.update()
                continue

Program şu kısımda çalışırken except bölümüne denk gelince aşağıdaki hatayı veriyor;

bu hatayı verince de program duruyor ve çalışmaya devam etmiyor. Bu kısmı atlamak için continue ve pass denedik fakat hiç bir şekilde atlatamadık. Bu hatayı nasıl düzeltebiliriz?

not = programı pc de deneyecek olursanız bir txt dosyası içerisine aşağıdaki linkleri kayıt edin ve dosyanın adını linkler olarak kayıt edin lütfen, daha sonra url = link[randint(0, 50)] yazan kısımdaki 50 yi 10 yapın çünkü 10 link paylaştım sizlerle ardından programı çalıştırdıktan sonra açılan pencereyi şu şekilde doldurun.

Ek Açıklama 2020-04-19 222821

linkler;

http://bc.vc/tStFIuL
http://bc.vc/3LlrwWo
http://bc.vc/UY4ckTs
http://bc.vc/ARJDGFQ
http://bc.vc/ZXMajL1
http://bc.vc/ZVlYtMJ
http://bc.vc/SoWRDpS
http://bc.vc/AeiPUf1
http://bc.vc/NKi2Zl1
http://bc.vc/iMY6BbN

programın çalışabilmesi için geckodriver yüklü olması ve path etmiş olmanız gerekmektedir bilginize. Yardımcı olabilecek arkadaşlara şimdiden teşekkürler.

2 Beğeni

“line 123” diyor hata mesajında, yani

hata buradan kaynaklanıyor. capabilities parametresinin ftpProxy’sine geçerli bir URL vermemişsiniz söylediğine göre.

1 Beğeni

şimdi öncelikle ftp proxy değil biz http https proxy kullanmaya çalışıyoruz bunu nasıl ayırt ettirebiliriz?

Burada ftpProxy için de bir value veriyorsunuz, onu vermemeyi deneyebilirsiniz.

Proxy yerine opera vpn kullanmak daha kolay değil mi?

mozilla dan çalıştırıyoruz

1 Beğeni

try except bloğuna aldığınız yer yanlış, @anon18277073 söylemiş. Ayrıca bu yanlış bir yöntem, atlayıp ne yapmayı planlıyorsunuz? İlk çözüm yöntemi hatanın sebebini bulup düzeltmek olmalı.

Hataya gelince, GetProxy fonksiyonunu kontrol etmeyi deneyebilirdiniz. Mesela ben şöyle bir sonuç aldım:

>>> GetProxy()
'118: CO'

Sizin aldığınız hatada da en sonda bunun ile aynı formatta bir şey var (burada hatayı fotoğraf olarak atmanızın zorluğunu yaşıyorum):

ftpProxy is not a valid URL: 28: CZ

28: CZ uygun bir proxy değil. GetProxy fonksiyonunu gözden geçirin bence. Genel olarak proxy kullanımı için bu linkleri inceleyebilirsiniz:

2 Beğeni

evet bende bu kısma şimdi şöyle düşündüm getproxy değerini bir koşula göre kontrol ettirmeyi (doğru proxy olup olmadığını) çektiği proxy koşula uygunsa devam edecek kontrol koşuluna uygun değilse tekrar proxy çekecek bu şekilde düzeleceğini düşünüyorıum biraz uğraşacağım

1 Beğeni

Merhaba. Anladığım kadarıyla GetProxy() fonksiyonu isteğiniz şekilde çalışmıyor. Yani sayfanın kaynak kodundan proxy ip’sini almıyor. GetProxy() fonksiyonunu şu şekilde düzenledim.

def GetProxy():
    url = 'https://www.sslproxies.org/'
    r = requests.get(url)
    soup = BeautifulSoup(r.content, 'html.parser')
    
    div = soup.find('div', class_='table-responsive')
    tbody = div.find("tbody")
    proxies = tbody.find_all("tr")
    proxy = proxies[randint(0, len(proxies)-1)]
    
    proxy_ip = proxy.find_all("td")[0].get_text()
    proxy_port = proxy.find_all("td")[1].get_text()
    proxy_country = proxy.find_all("td")[3].get_text()
    
    return (proxy_ip, proxy_port, proxy_country)

Burada GetProxy() fonksiyonu proxyler arasından rastgele birini seçiyor ve bir demet dönüyor.

1 Beğeni

Şöyle bir şey işe yarayabilir:

import socket

def is_valid_url(url):
    addr = url.split(":", 1)[0]
    try:
        socket.gethostbyaddr(addr)
    except socket.gaierror:
        return False
    return True
1 Beğeni

denedim bir türlü uyumlu yapamadım efendim

bunu tam olarak nereye koyacağım efendim

Aslında ben de asıl sıkıntının @ibrahimcetin’in dediği gibi proxy’leri çektiğiniz bölümde olduğunu düşünüyorum. Ama ona dokunmadan her seferinde proxyleri kontrol etmek için benim attığım fonksiyonu kullanabilirsiniz. O fonksiyon verilen url geçerli bir adres ise true, değilse false döndürüyor.

teşşekürler ederiz deneyip haber vereceğiz

1 Beğeni

uyumlu yapamadım rica etsem düzenleyebilir ve verebilirmisiniz?

Sonunu return proxy_ip + ":" + proxy_port yapıp deneyin istiyorsanız.

çalıştı efendim teşekkürler ederim

1 Beğeni

bu verdiğiniz kodu uyarlayamadım efendim

@ibrahimcetin’in verdiği kod düzgün çalışıyorsa onu kullanmanıza çok da gerek yok zaten.

bir sorumuz daha olacak bu kodlara threading nasıl uygulayabilirim?