Недавно (9 апреля) я опубликовал пост "Пробуем PyProxy - комбайн 2010 года ...". Там скрипт, который помещается на одной страничке. Теперь пора попрактиковать мои знания PDB на этом скрипте.
Я попробовал было запустится из интерпретатора IPython, но понял, что проще запустить дебаггер из консоли "python -m pdb pyproxy.py -l"
Программа была написана именно для запуски из командной строки. В процессе дебаггинга все работало отлично. Удалось и скрипт запустить. В основе работы скрипта лежит идея использования регулярных выражений для идентификации строчек ' IP:Prt ' Далее то, что еще удалось узнать о скрипте...
Я попробовал было запустится из интерпретатора IPython, но понял, что проще запустить дебаггер из консоли "python -m pdb pyproxy.py -l"
Программа была написана именно для запуски из командной строки. В процессе дебаггинга все работало отлично. Удалось и скрипт запустить. В основе работы скрипта лежит идея использования регулярных выражений для идентификации строчек ' IP:Prt ' Далее то, что еще удалось узнать о скрипте...
Здесь отмечу особенности самого скрипта PyProxy¶
Весь модуль около 355 строк. Код 2011 года. Программа вырезает прокси из 10-ти сайтов (половину адресов надо исправлять), сортирует список, убирает дубли, проверяет прокси-сервера. И все управлятеся из комадной строки системной консоли.
В модуль импортируется несколько "штатных модулей" (некоторые ссылки ниже). Всего два класса. Со всеми подробностями можно разобраться, если понадобится... Используется устаревшая библиотека optparse, понравилась идея - использовать регулярные выражения для вырезания из любых страниц строчек формата IP:Port, понравилось лаконичность кода для def ParseProxy(self, site), нужно запомнить.
В модуль импортируется несколько "штатных модулей" (некоторые ссылки ниже). Всего два класса. Со всеми подробностями можно разобраться, если понадобится... Используется устаревшая библиотека optparse, понравилась идея - использовать регулярные выражения для вырезания из любых страниц строчек формата IP:Port, понравилось лаконичность кода для def ParseProxy(self, site), нужно запомнить.
Ссылки на первоисточники и библиотеки¶
In []:
[Пробуем PyProxy - комбайн 2010 года для сбора и проверки адресов](http://pythonr.blogspot.ru/2014/04/pyproxy-2010.html)
<br/>[PyProxy](http://sourceforge.net/projects/pyproxy/files/?source=navbar)
<br/>[15.5. optparse — Parser for command line options](https://docs.python.org/2/library/optparse.html)
<br/>[7.2. re — Regular expression operations](https://docs.python.org/2/library/re.html)
<br/>[Regular Expression HOWTO](https://docs.python.org/2/howto/regex.html#regex-howto)
<br/>[20.6. urllib2 — extensible library for opening URLs](https://docs.python.org/2/library/re.html)
<br/>[]()
<br/>[]()
<br/>[]()
Далее начало моих упражнений (моэно пропустить)¶
In [1]:
%qtconsole
Пока грузится консоль, отметим, что ей пользоваться очень удобно. Не надо стирать ячейки. В первом посте я разархивировал файл скрипта и загрузил его в ячейку командой "%load pyproxy.py", а здесь запустим дебаггер из консоли:
In [8]:
import pyproxy
import pdb
pdb.run('pyproxy.run')
Да, эти команды запускают дебаггер, я не сразу догадался, что надо запускать "pyproxy", а не "pyproxy.py"...
Потом я начла знакомистя с кодом программы..., она использует библиотеку optparse для запуска программы из системной консоли, а я пытался запустится из интерпретатора Питона...
Очевидно, что проще так и запустить дебаггер. Потому, сначала пробуем python pyproxy.py -h:
Потом я начла знакомистя с кодом программы..., она использует библиотеку optparse для запуска программы из системной консоли, а я пытался запустится из интерпретатора Питона...
Очевидно, что проще так и запустить дебаггер. Потому, сначала пробуем python pyproxy.py -h:
In []:
E:\ipython notebook>c:
C:\Users\kiss\Documents\IPython Notebooks\web\debuggers> cd ..\proxy\pyproxy
C:\Users\kiss\Documents\IPython Notebooks\web\proxy\pyProxy>python pyproxy.py -h
PyProxy v.09 by Gunslinger_ <yudha.gunslinger@gmail.com> - Proxy Hunter and Tester Opensource engine
A high-level cross-protocol proxy-hunter
Usage: pyproxy.py [options]
Options:
-h, --help show this help message and exit
-s, --samair just use samair.ru to hunt proxies
-l, --sitelist use all site in the list
-t, --test test all proxy !
-a, --all do all !
-v, --version print current proxy hunter version
-d, --debug debug program for more talkable & every proxy will be
print to screen
-o FILE, --outputfile=FILE
output proxy will be print
[default : proxylist.txt]
-i FILE, --inputfile=FILE
input proxy will be checked
[default : proxylist.txt]
-g FILE, --outputgood=FILE
output all good proxy will be saved
[default : goodproxy.txt]
-c NUMBER, --timeout=NUMBER
timeout connections being program run
[default : 30]
Example :
pyproxy.py -s | Gather proxy with samair.ru
pyproxy.py -l | Gather proxy in the url list
pyproxy.py -t proxylist.txt | Test proxy inside proxylist.txt
pyproxy.py -a | Do all
pyproxy.py -v | Print current version
C:\Users\kiss\Documents\IPython Notebooks\web\proxy\pyProxy>
Потом повторяем (в Windows8) то, что у меня прошло на машине с Debian
In []:
# Выдает даже список прокси на экран
python pyproxy.py -l -d
In []:
C:\Users\kiss\Documents\IPython Notebooks\web\proxy\pyProxy>python pyproxy.py -l -d
PyProxy v.09 by Gunslinger_ <yudha.gunslinger@gmail.com> - Proxy Hunter and Tester Opensource engine
A high-level cross-protocol proxy-hunter
[*] Parse proxy from www.proxy-list.net/anonymous-proxy-lists.shtml
[*] ←[31m0←[0;0m Proxies receieved from : www.proxy-list.net/anonymous-proxy-lists.shtml
[*] Parse proxy from www.digitalcybersoft.com/ProxyList/fresh-proxy-list.shtml
[*] ←[31m0←[0;0m Proxies receieved from : www.digitalcybersoft.com/ProxyList/fresh-proxy-list.shtml
[*] Parse proxy from www.1proxyfree.com/
[*] ←[31m0←[0;0m Proxies receieved from : www.1proxyfree.com/
[*] Parse proxy from www.proxylists.net/http_highanon.txt
58.221.227.38:3128
178.32.5.178:3128
94.23.154.55:3128
......
213.160.143.150:3128
209.97.203.60:3128
217.71.228.121:8888
[*] ←[31m132←[0;0m Unique proxy list has been sorted . saved in uniqueproxylist.txt
In []:
python -m pdb pyproxy.py -l
Посты чуть ниже также могут вас заинтересовать
Комментариев нет:
Отправить комментарий