Skocz do zawartości

Proxy Checker - Skrypt Do Sprawdzania Proxy


thof

Rekomendowane odpowiedzi

Dzisiaj akurat musialem uzyc proxy i troche to denerwujace jak duzo tych darmowych proxy w internecie nie dziala. Postanowilem napisac skrypt, który sprawdzi kilka proxy za mnie. Ale zeby nie bylo latwo to nie napisalem go w niesmiertelnym shellu (bashu), ale w modnym ostatnio Pythonie ;) Nigdy wczesniej nie pisalem nic w Pythonie i kompletnie nie znam tego jezyka, ale dokumentacja jest ok i po dwóch godzina cos wyszlo. Wszystko byloby ok, gdyby Python nie zajmowal 70MB na dysku, ale to szczegól w tych czasach.

 

Akurat tu parsuje wyniki ze strony xroxy.com. Wybralem xroxy tylko dlatego, ze pojawila sie jako jedna z pierwszych w google po wpisaniu "proxy germany" i pierwszej z brzegu proxy dziala bardzo fajnie. Wyniki sa posortowane od tych najbardziej niezawodnych (tylko niezawodnosc powyzej 90%). Pobierane sa tylko z jednej strony (10 proxy), co dla mnie jest wystarczajace, ale jakby ktos chcial to moze latwo rozszerzyc na kolejne.

 

Kraj mozna zmienic, wystarczy podac kod w parametrze "country" (teraz DE, czyli Deutschland). Podobnie timeout, jesli zalezy wam na szybkim proxy to mozna zmniejszyc parametr "timeout_s" do dwóch czy nawet jednej sekundy.

 

Z niestandardowych bibliotek uzylem BeautifulSoup, ale na Fedorze pewnie jest z automatu, a jak nie to mozna yumem doinstalowac. Skrypt trzeba odpalac na Pythonie 2.7, czyli prawdopodobnie wywolanie python2 proxychecker.py

 

Na wyjsciu wydrukowane zostana tylko proxy, z uzyciem których udalo sie pobrac strone testowa. Jesli cos pójdzie nie tak z jakims proxy to skrypt przemilczy wyjatek (HTTP lub URL) i bedzie sprawdzal kolejne, nic nie wypisujac na temat niedzialajacych.

Kod:

from BeautifulSoup import BeautifulSoup
import re
import urllib2

# parametry
url = "http://google.com" # strona do testowania
country = "DE" # kraj pochodzenia proxy
timeout_s = 5 # timeout w sekundach

ip_list = []
port_list = []
proxy_content = urllib2.urlopen("http://www.xroxy.com/proxylist.php?country="+country+"&reliability=9000&sort=reliability")
soup = BeautifulSoup(proxy_content)

# parsing
ip = soup.findAll(['a'],attrs={'href' : re.compile('^/proxy\d+\.htm')})
port = soup.findAll(['a'],attrs={'href' : re.compile('^/proxy-\d+-.+\.htm')})
for p in port:
   port_list.append(p.contents[0])
for i in ip:
   m = re.match(r'\d' ,i.contents[0][:-1])
   if m:
       ip_list.append(i.contents[0][:-1])

# checking
if len(ip_list)!=len(port_list):
   print "Something goes wrong!"
else:
   for i, p in zip(ip_list, port_list):
       try:
           proxy = urllib2.ProxyHandler({'http': i+":"+p})
           opener = urllib2.build_opener(proxy)
           urllib2.install_opener(opener)
           response = urllib2.urlopen(url, timeout=timeout_s)
           print(i+":"+p)
       except urllib2.HTTPError as e:
           pass
       except urllib2.URLError as e:
           pass

 

Czasami dziwnie potrafi zmulic ten urlopen, ale w koncu ruszy. A Python nawet fajny, chyba bede w nim czesciej pisal.

  • Upvote 1
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...