Поиск по блогу

среда, 16 апреля 2014 г.

Первые впечатления до и после дебаггинга "python -m pdb pyproxy.py -l"

Недавно (9 апреля) я опубликовал пост "Пробуем PyProxy - комбайн 2010 года ...". Там скрипт, который помещается на одной страничке. Теперь пора попрактиковать мои знания PDB на этом скрипте.
Я попробовал было запустится из интерпретатора IPython, но понял, что проще запустить дебаггер из консоли "python -m pdb pyproxy.py -l"
Программа была написана именно для запуски из командной строки. В процессе дебаггинга все работало отлично. Удалось и скрипт запустить. В основе работы скрипта лежит идея использования регулярных выражений для идентификации строчек ' IP:Prt ' Далее то, что еще удалось узнать о скрипте...

Здесь отмечу особенности самого скрипта PyProxy

Весь модуль около 355 строк. Код 2011 года. Программа вырезает прокси из 10-ти сайтов (половину адресов надо исправлять), сортирует список, убирает дубли, проверяет прокси-сервера. И все управлятеся из комадной строки системной консоли.

В модуль импортируется несколько "штатных модулей" (некоторые ссылки ниже). Всего два класса. Со всеми подробностями можно разобраться, если понадобится... Используется устаревшая библиотека 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')
> <string>(1)<module>()
(Pdb) n
AttributeError: "'module' object has no attribute 'run'"
> <string>(1)<module>()
(Pdb) l
[EOF]
(Pdb) list
[EOF]
(Pdb) n
--Return--
> <string>(1)<module>()->None
(Pdb) n

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-8-b0e0d1ceede0> in <module>()
      1 import pyproxy
      2 import pdb
----> 3 pdb.run('pyproxy.run')

C:\Users\kiss\Anaconda\lib\pdb.pyc in run(statement, globals, locals)
   1236 
   1237 def run(statement, globals=None, locals=None):
-> 1238     Pdb().run(statement, globals, locals)
   1239 
   1240 def runeval(expression, globals=None, locals=None):

C:\Users\kiss\Anaconda\lib\bdb.pyc in run(self, cmd, globals, locals)
    398             cmd = cmd+'\n'
    399         try:
--> 400             exec cmd in globals, locals
    401         except BdbQuit:
    402             pass

<string> in <module>()

AttributeError: 'module' object has no attribute 'run'
Да, эти команды запускают дебаггер, я не сразу догадался, что надо запускать "pyproxy", а не "pyproxy.py"...
Потом я начла знакомистя с кодом программы..., она использует библиотеку 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


Посты чуть ниже также могут вас заинтересовать

Комментариев нет:

Отправить комментарий