initial commit

This commit is contained in:
mickael
2019-01-03 16:36:31 +00:00
commit 3fb2dc40a6
12 changed files with 1792 additions and 0 deletions

23
config.ini Normal file
View File

@@ -0,0 +1,23 @@
[global]
tor_host = 127.0.0.1:9050
i2p_host = 127.0.0.1:4444
common_proxy_ports = 80, 1080, 3124, 3128, 4145, 4444, 8080, 8081, 8118, 8888, 9999
proxylist_reload_every = 180
database = proxylist.sqlite
proxy_max_fail = 5
[watcherd]
enabled = true
proxy_file = false
checktime = 1800
threads = 10
timeout = 15
read_timeout = 20
max_fail = 5
[proxyfind]
enabled = true
search = true
maxfail = 10
timeout = 30
threads = 3

562
import.txt Normal file
View File

@@ -0,0 +1,562 @@
http://spys.one/en/socks-proxy-list/
https://www.my-proxy.com/free-socks-5-proxy.html
http://www.proxyserverlist24.top/feeds/posts/default
http://spys.me/proxy.txt
https://raw.githubusercontent.com/opsxcq/proxy-list/master/list.txt
https://raw.githubusercontent.com/a2u/free-proxy-list/master/free-proxy-list.txt
https://raw.githubusercontent.com/flyinwind/proxylist/master/proxies.txt
https://raw.githubusercontent.com/clarketm/proxy-list/master/proxy-list.txt
http://multiproxy.org/txt_all/proxy.txt
https://github.com/clarketm/proxy-list/blob/master/proxy-list.txt
http://www.megaproxylist.net/
https://raw.githubusercontent.com/JamesJGoodwin/wreckuests/master/files/proxy.txt
https://www.binary-zone.com/files/MyProxyList.txt
http://captchasniper.com/new/FreeProxies.txt
http://oupfps7we.bkt.clouddn.com/proxy_list.txt
http://white55.narod.ru/downloads/proxyold.txt
http://www.white55.narod.ru/downloads/proxylist.txt
http://xls.su/br/1.txt
https://proxyscrape.com/proxies/HTTP_Working_Proxies.txt
https://rootjazz.com/proxies/proxies.txt
http://www.zarb.org/~saispo/proxylist.txt
http://promicom.by/tools/proxy/proxy.txt
http://pouuet.free.fr/proxy.txt
https://www.my-proxy.com/free-proxy-list.html?list=1
https://www.my-proxy.com/free-proxy-list.html?list=2
https://www.my-proxy.com/free-proxy-list.html?list=3
https://www.my-proxy.com/free-proxy-list.html?list=4
https://www.my-proxy.com/free-proxy-list.html?list=5
https://www.my-proxy.com/free-proxy-list.html?list=6
https://www.my-proxy.com/free-proxy-list.html?list=7
https://www.my-proxy.com/free-proxy-list.html?list=8
https://www.my-proxy.com/free-proxy-list.html?list=9
https://www.my-proxy.com/free-proxy-list.html?list=10
http://proxy-ip-list.com/download/free-usa-proxy-ip.txt
http://proxy-ip-list.com/download/free-uk-proxy-list.txt
http://www.freeproxy.ru/download/lists/goodproxy.txt
http://www.proxylists.net/socks4.txt
http://multiproxy.org/txt_all/proxy.txt
https://raw.githubusercontent.com/Zenaker/IpLogger-Flood/master/proxy.txt
https://raw.githubusercontent.com/SEODEMON/EXTREME-PROXY-HARVESTER-AND-CHECKER/master/leeched/leeched_proxies.txt
https://proxy.mimvp.com/free.php?proxy=in_hp
http://www.coobobo.com/free-http-proxy
http://ip.zdaye.com/
http://www.mayidaili.com/free/anonymous/%E9%AB%98%E5%8C%BF
http://http.taiyangruanjian.com/
http://http.zhimaruanjian.com/
http://proxydb.net/?protocol=http&anonlvl=2&anonlvl=3&anonlvl=4&availability=90
http://proxydb.net/?protocol=http&anonlvl=2&anonlvl=3&anonlvl=4&availability=90&offset=50
http://proxydb.net/?protocol=http&anonlvl=2&anonlvl=3&anonlvl=4&availability=90&offset=100
http://proxydb.net/?protocol=http&anonlvl=2&anonlvl=3&anonlvl=4&availability=90&offset=150
http://proxydb.net/?protocol=http&anonlvl=2&anonlvl=3&anonlvl=4&availability=90&offset=200
http://samair.ru/proxy/list-IP-port/proxy-1.htm
http://samair.ru/proxy/list-IP-port/proxy-2.htm
http://samair.ru/proxy/list-IP-port/proxy-3.htm
http://samair.ru/proxy/list-IP-port/proxy-4.htm
http://samair.ru/proxy/list-IP-port/proxy-5.htm
http://proxylist.hidemyass.com/search-1304300#listable
https://free-proxy-list.net/
https://proxy-list.org/english/search.php?search=anonymous-and-elite.ssl-no&country=any&type=anonymous-and-elite&port=any&ssl=no
https://proxy-list.org/english/search.php?search=anonymous-and-elite.ssl-no&country=any&type=anonymous-and-elite&port=any&ssl=no&p=2
https://hidemy.name/en/proxy-list/?type=h&anon=4#list
https://hidemy.name/en/proxy-list/?type=h&anon=4&start=64#list
https://hidemy.name/en/proxy-list/?type=h&anon=4&start=128#list
https://hidemy.name/en/proxy-list/?type=h&anon=4&start=192#list
https://checkerproxy.net/archive/2017-04-01
http://aliveproxy.com/fastest-proxies/
http://multiproxy.org/anon_proxy.htm
http://www.ultraproxies.com/high-anonymous.html
http://www.ip-adress.com/proxy_list/
http://samair.ru/anonymity-test/
http://txt.proxyspy.net/proxy.txt
http://nntime.com/
http://www.gatherproxy.com/
http://proxysearcher.sourceforge.net/Proxy%20List.php?type=http&filtered=true
http://proxyserverlist-24.blogspot.com/2016/11/01-11-16-fast-proxy-server-list.html
https://cracking.org/threads/190x-anonymous-proxy-list.125920/
http://samair.ru/proxy/list-IP-port/ip-address-12.htm
http://www.businessadviceforum.com/threads/fastest-securest-proxies-on-the-web-new-proxy-lists-everyday.75326/page-10
http://proxydb.net/?protocol=http&anonlvl=2&anonlvl=4&availability=90&response_time=10
http://proxydb.net/?protocol=http&anonlvl=2&anonlvl=4&availability=90&response_time=10&offset=50
http://proxydb.net/?protocol=http&anonlvl=2&anonlvl=4&availability=90&response_time=10&offset=100
http://proxydb.net/?protocol=http&anonlvl=2&anonlvl=4&availability=90&response_time=10&offset=100
http://proxydb.net/?protocol=http&anonlvl=2&anonlvl=4&availability=90&response_time=10&offset=150
http://proxydb.net/?protocol=http&anonlvl=2&anonlvl=4&availability=90&response_time=10&offset=200
http://www.nntime.com/proxy/
http://www.textproxylists.com/proxy.php?codeen
http://www.textproxylists.com/proxy.php?anonymous
http://www.textproxylists.com/proxy.php?highanonymity
http://www.textproxylists.com/proxy.php?transparent
http://www.textproxylists.com/proxy.php?nontransparent
http://www.textproxylists.com/proxy.php?allproxy
http://proxies.my-proxy.com/proxy-list-s1.html
http://proxies.my-proxy.com/proxy-list-s2.html
http://proxies.my-proxy.com/proxy-list-s3.html
http://proxies.my-proxy.com/proxy-list-1.html
http://proxies.my-proxy.com/proxy-list-2.html
http://proxies.my-proxy.com/proxy-list-3.html
http://proxies.my-proxy.com/proxy-list-4.html
http://proxies.my-proxy.com/proxy-list-5.html
http://proxies.my-proxy.com/proxy-list-6.html
http://proxies.my-proxy.com/proxy-list-7.html
http://proxies.my-proxy.com/proxy-list-8.html
http://proxies.my-proxy.com/proxy-list-9.html
http://proxies.my-proxy.com/proxy-list-10.html
http://www.proxy-list.net/anonymous-proxy-lists.shtml
http://www.proxy-list.net/transparent-proxy-lists.shtml
http://www.digitalcybersoft.com/ProxyList/fresh-proxy-list.shtml?
http://proxies.my-proxy.com/
http://proxies.my-proxy.com/proxy-list-2.html
http://proxies.my-proxy.com/proxy-list-3.html
http://proxies.my-proxy.com/proxy-list-4.html
http://proxies.my-proxy.com/proxy-list-5.html
http://proxies.my-proxy.com/proxy-list-6.html
http://proxies.my-proxy.com/proxy-list-7.html
http://proxies.my-proxy.com/proxy-list-8.html
http://proxies.my-proxy.com/proxy-list-9.html
http://proxies.my-proxy.com/proxy-list-10.html
http://proxies.my-proxy.com/proxy-list-s1.html
http://proxies.my-proxy.com/proxy-list-s2.html
http://proxies.my-proxy.com/proxy-list-s3.html
http://www.cooleasy.com/
http://www.cooleasy.com/?act=list&port=&type=&country=&page=2
http://www.cooleasy.com/?act=list&port=&type=&country=&page=3
http://www.cooleasy.com/?act=list&port=&type=&country=&page=4
http://www.cooleasy.com/?act=list&port=&type=&country=&page=5
http://www.cooleasy.com/?act=list&port=&type=&country=&page=6
http://www.cooleasy.com/?act=list&port=&type=&country=&page=7
http://www.cooleasy.com/?act=list&port=&type=&country=&page=8
http://www.cooleasy.com/?act=list&port=&type=&country=&page=9
http://www.cooleasy.com/?act=list&port=&type=&country=&page=10
http://www.cooleasy.com/?act=list&port=&type=&country=&page=11
http://www.cooleasy.com/?act=list&port=&type=&country=&page=12
http://www.cooleasy.com/?act=list&port=&type=&country=&page=13
http://www.cooleasy.com/?act=list&port=&type=&country=&page=14
http://www.x-proxy.info/highanon.php
http://www.fresh-proxy-list.net/fresh%20proxy%20list.htm
http://atomintersoft.com/free_proxy_list
http://publicproxylist.org/
http://httpproxylist.org/
http://www.proxz.com/proxy_list_anonymous_us_0.html
http://spys.me/proxy.txt
https://raw.githubusercontent.com/a2u/free-proxy-list/master/free-proxy-list.txt
https://free-proxy-list.net/anonymous-proxy.html
https://www.aliveproxy.com/proxy-list/proxies.aspx/Russian_Federation-ru
http://www.aliveproxy.com/de-proxy-list/
http://proxy-ip-list.com/free-usa-proxy-ip.html
http://proxy-ip-list.com/8081/transparent-Spain-8081.html
https://www.my-proxy.com/blog/tag/proxy-setting
http://aliveproxy.com/proxy-list/proxies.aspx/South_Korea-KR
https://www.my-proxy.com/free-proxy-list-3.html
https://www.my-proxy.com/free-proxy-list-2.html
https://www.my-proxy.com/free-proxy-list-4.html
https://www.my-proxy.com/free-proxy-list-10.html
https://free-proxy-list.net/?ref=binfind.com/web
http://www.aliveproxy.com/proxy-list/proxies.aspx/Syria-sy
https://www.my-proxy.com/free-proxy-list-9.html
https://www.my-proxy.com/free-proxy-list-8.html
https://www.my-proxy.com/free-proxy-list-5.html
https://www.my-proxy.com/free-proxy-list-6.html
https://github.com/a2u/free-proxy-list/blob/master/free-proxy-list.txt
https://github.com/fate0/proxylist/blob/master/proxy.list
http://proxy-ip-list.com/8080/fresh-servers-list-8080-Indonesia.html
https://www.my-proxy.com/free-proxy-list.html
https://www.my-proxy.com/free-elite-proxy.html
https://www.my-proxy.com/free-proxy-list.html?list=10
http://proxy-ip-list.com/high-anonymous/high-anonymous-80-servers-list.html
https://www.my-proxy.com/free-proxy-list.html?list=1
https://www.my-proxy.com/free-transparent-proxy.html
https://www.my-proxy.com/free-proxy-list.html?list=3
https://www.my-proxy.com/free-proxy-list.html?list=5
https://www.my-proxy.com/free-proxy-list-1.html
https://www.my-proxy.com/free-proxy-list.html?list=s2
https://www.my-proxy.com/free-anonymous-proxy.html
https://www.my-proxy.com/free-proxy-list.html?list=9
https://www.my-proxy.com/free-proxy-list.html?list=2
https://www.my-proxy.com/free-proxy-list.html?list=s3
https://www.my-proxy.com/free-proxy-list.html?list=7
https://www.my-proxy.com/free-proxy-list.html?list=4
https://www.my-proxy.com/free-proxy-list.html?list=6
https://www.my-proxy.com/free-proxy-list.html?list=8
http://proxies.my-proxy.com/proxy-list-s1.html
http://proxies.my-proxy.com/proxy-list-s2.html
http://proxies.my-proxy.com/proxy-list-s3.html
http://proxies.my-proxy.com/proxy-list-1.html
http://proxies.my-proxy.com/proxy-list-2.html
http://proxies.my-proxy.com/proxy-list-3.html
http://proxies.my-proxy.com/proxy-list-4.html
http://proxies.my-proxy.com/proxy-list-5.html
http://proxies.my-proxy.com/proxy-list-6.html
http://proxies.my-proxy.com/proxy-list-7.html
http://proxies.my-proxy.com/proxy-list-8.html
http://proxies.my-proxy.com/proxy-list-9.html
http://proxies.my-proxy.com/proxy-list-10.html
http://proxies.my-proxy.com/
http://www.proxz.com/proxy_list_anonymous_us_0.html
https://www.my-proxy.com/free-socks-5-proxy.html
http://www.httptunnel.ge/ProxyListForFree.aspx
https://www.my-proxy.com/free-socks-4-proxy.html
http://proxysearcher.sourceforge.net/Proxy%20List.php?type=socks&filtered=true
http://proxysearcher.sourceforge.net/Proxy%20List.php
http://www.proxz.com/
http://www.proxz.com/proxy_list_port_std_2.html
http://www.proxz.com/proxy_list_uk_0_ext.html
http://www.proxz.com/proxy_list_transparent_11_ext.html
http://www.proxz.com/proxy_list_port_std_0.html
http://www.proxz.com/proxy_list_port_std_28.html
http://www.proxz.com/proxy_list_cn_ssl_43.html
http://www.proxz.com/proxy_list_high_anonymous_61.html
http://www.proxz.com/proxy_list_port_nonstd_54.html
http://www.proxz.com/proxy_list_port_std_38.html
http://www.proxz.com/proxy_list_port_std_17.html
https://www.proxydocker.com/de/proxylist/country/Germany
http://proxysearcher.sourceforge.net/ProxyList.php?type=socks&filtered=true
http://proxysearcher.sourceforge.net/ProxyList.php%3Ftype%3Dsocks%26filtered%3Dtrue
http://proxysearcher.sourceforge.net/ProxyList.php%3Ftype%3Dsocks%26filtered%3Dtrue%26limit%3D1000
http://www.proxz.com/proxy_list_port_nonstd_84_ext.html
https://www.proxydocker.com/de/proxylist/country/Austria
https://www.proxydocker.com/de/socks-list/
https://free-proxy-list.com/
http://proxysearcher.sourceforge.net/Proxy%20List.php?type=socks
http://www.proxz.com/proxy_list_transparent_17.html
http://proxysearcher.sourceforge.net/ProxyList.php?type=http
http://proxysearcher.sourceforge.net/ProxyList.php?type=socks
http://proxysearcher.sourceforge.net/ProxyList.php?type=http&filtered=true
http://proxysearcher.sourceforge.net/ProxyList.php%3Ftype%3Dsocks
http://www.proxz.com/proxy_list_port_std_11_ext.html
http://www.proxz.com/proxy_list_port_nonstd_18_ext.html
http://www.proxz.com/proxy_list_port_nonstd_5_ext.html
http://www.proxz.com/proxy_list_port_std_36.html
http://www.proxz.com/proxy_list_port_nonstd_20_ext.html
http://www.proxz.com/proxy_list_high_anonymous_15_ext.html
http://www.proxz.com/proxy_list_port_std_72_ext.html
http://www.proxz.com/proxy_list_port_nonstd_31.html
http://www.proxz.com/proxy_list_port_nonstd_8.html
http://www.proxz.com/proxy_list_high_anonymous_56_ext.html
http://www.proxz.com/proxy_list_transparent_30_ext.html
http://www.proxz.com/proxy_list_port_nonstd_58.html
http://www.proxz.com/proxy_list_high_anonymous_87.html
http://www.proxz.com/proxy_list_high_anonymous_86.html
http://www.proxz.com/proxy_list_port_nonstd_151.html
http://www.proxz.com/proxy_list_transparent_8_ext.html
http://www.proxz.com/proxy_list_transparent_42_ext.html
http://www.proxz.com/proxy_list_port_nonstd_4.html
http://www.proxz.com/proxy_list_high_anonymous_4.html
http://www.proxz.com/proxy_list_transparent_51_ext.html
http://www.proxz.com/proxy_list_high_anonymous_2.html
http://www.proxz.com/proxy_list_port_nonstd_117.html
http://www.proxz.com/proxy_list_port_nonstd_62.html
http://www.proxz.com/proxy_list_port_std_9_ext.html
http://www.proxz.com/proxy_list_high_anonymous_43.html
http://www.proxz.com/proxy_list_transparent_5_ext.html
http://www.proxz.com/proxy_list_high_anonymous_11.html
http://www.proxz.com/proxy_list_port_std_41_ext.html
http://www.proxz.com/proxy_list_port_nonstd_0.html
http://www.proxz.com/proxy_list_transparent_3_ext.html
http://www.proxz.com/proxy_list_transparent_52_ext.html
http://www.proxz.com/proxy_list_high_anonymous_72.html
http://www.proxz.com/proxy_list_fr_1.html
http://www.proxz.com/proxy_list_cn_ssl_47_ext.html
http://www.proxz.com/proxy_list_port_std_27_ext.html
http://www.proxz.com/proxy_list_jp_0.html
http://www.proxz.com/proxy_list_ca_1.html
http://www.proxz.com/proxy_list_port_nonstd_127_ext.html
http://www.proxz.com/proxy_list_port_std_166_ext.html
http://www.proxz.com/proxy_list_high_anonymous_5_ext.html
http://www.proxz.com/proxy_list_transparent_24_ext.html
http://www.proxz.com/proxy_list_high_anonymous_4_ext.html
http://www.proxz.com/proxy_list_port_std_97.html
http://www.proxz.com/proxy_list_anonymous_us_2.html
http://www.proxz.com/proxy_list_high_anonymous_9.html
http://www.proxz.com/proxy_list_high_anonymous_91.html
http://www.proxz.com/proxy_list_transparent_0.html
http://www.proxz.com/proxy_list_high_anonymous_24.html
http://www.proxz.com/proxy_list_port_std_53_ext.html
http://www.proxz.com/proxy_list_cn_ssl_38_ext.html
http://www.proxz.com/proxy_list_transparent_31_ext.html
http://www.proxz.com/proxy_list_port_nonstd_12_ext.html
http://www.proxz.com/proxy_list_high_anonymous_9_ext.html
http://www.proxz.com/proxy_list_port_std_15_ext.html
http://www.proxz.com/proxy_list_port_nonstd_59_ext.html
http://www.proxz.com/proxy_list_port_nonstd_46_ext.html
http://www.proxz.com/proxy_list_port_std_12_ext.html
http://www.proxz.com/proxy_list_port_std_17_ext.html
http://www.proxz.com/proxy_list_port_std_40_ext.html
http://www.proxz.com/proxy_list_port_nonstd_137_ext.html
http://www.proxz.com/proxy_list_high_anonymous_132_ext.html
https://www.proxydocker.com/?_locale=es
https://www.proxydocker.com/en/proxylist/city/Mumbai
https://www.proxydocker.com/en/proxylist/city/Dhaka
https://www.proxydocker.com/en/proxylist/country/Lebanon
https://www.proxydocker.com/de/proxylist/country/Indonesia
http://www.proxydocker.com/de/proxylist/port/8118
http://www.proxz.com/proxy_list_high_anonymous_14_ext.html
http://www.proxz.com/proxy_list_port_nonstd_23.html
https://www.proxz.com/proxy_list_fr_0.html
http://www.proxz.com/proxy_list_high_anonymous_36.html
http://www.proxz.com/proxy_list_transparent_15_ext.html
http://www.proxz.com/proxy_list_port_nonstd_66_ext.html
http://www.proxz.com/proxy_list_transparent_68.html
https://www.proxydocker.com/
https://www.proxydocker.com/fr/
https://www.proxydocker.com/es/
https://www.proxydocker.com/en/
https://www.proxydocker.com/ms/
https://www.proxydocker.com/pt/
https://www.proxydocker.com/de/
https://www.proxydocker.com/tr/
https://www.proxydocker.com/it/
http://www.proxz.com/proxy_list_transparent_1_ext.html
http://www.proxz.com/proxy_list_transparent_38_ext.html
http://www.proxz.com/proxy_list_port_nonstd_33.html
http://www.proxz.com/proxy_list_high_anonymous_1_ext.html
http://www.proxz.com/proxy_list_transparent_40_ext.html
http://www.proxz.com/proxy_list_port_nonstd_10_ext.html
http://www.proxz.com/proxy_list_transparent_14_ext.html
http://www.proxz.com/proxy_list_high_anonymous_64_ext.html
https://www.proxydocker.com/en/proxylist/country/Hungary
https://www.proxydocker.com/en/proxylist/country/Netherlands
https://www.proxydocker.com/en/proxylist/city/Jalalpur
https://www.proxydocker.com/en/proxylist/city/Istanbul
http://www.proxydocker.com/
https://www.proxydocker.com/?_locale=de
https://www.proxydocker.com/en/proxylist/city/Singapore
https://www.proxydocker.com/en/proxylist/state/Virginia
https://www.proxydocker.com/en/proxylist/city/Kiev
https://www.proxydocker.com/en/proxylist/state/Florida
https://www.proxydocker.com/en/proxylist/country/Moldova
https://www.proxydocker.com/en/proxylist/port/53281
https://www.proxydocker.com/en/proxylist/country/Indonesia
https://www.proxydocker.com/en/proxylist/country/Peru
https://www.proxydocker.com/en/proxylist/country/Thailand
http://www.proxz.com/proxy_list_port_nonstd_77_ext.html
http://www.proxz.com/proxy_list_transparent_56.html
http://www.proxz.com/proxy_list_cn_ssl_85_ext.html
http://www.proxz.com/proxy_list_port_std_24_ext.html
http://www.proxz.com/proxy_list_high_anonymous_7.html
https://www.proxydocker.com/en/proxylist/country/United%20States
https://www.proxydocker.com/de/proxylist/country/Russia
https://www.proxydocker.com/en/proxylist/
https://www.proxydocker.com/de/proxylist/country/Italy
https://www.proxydocker.com/de/proxylist/port/8080,3128
https://www.proxydocker.com/de/proxylist/country/United%20Kingdom
https://www.proxydocker.com/en/socks4-list/
https://www.proxydocker.com/?_locale=hi
https://www.proxydocker.com/?_locale=ms
https://www.proxydocker.com/?id=7PeaMYqp7Fk
https://www.proxydocker.com/?_locale=fr
https://www.proxydocker.com/?_locale=it
https://www.proxydocker.com/?_locale=en
https://www.proxydocker.com/?_locale=ru
https://www.proxydocker.com/en/socks-list/
http://www.proxz.com/proxy_list_cn_ssl_88_ext.html
http://www.proxz.com/proxy_list_high_anonymous_46_ext.html
http://www.proxz.com/proxy_list_transparent_55.html
http://www.proxz.com/proxy_list_high_anonymous_29_ext.html
http://www.proxz.com/proxy_list_high_anonymous_10.html
https://www.proxydocker.com/de/proxylist/country/Belgium
https://www.proxydocker.com/de/proxylist/country/Cambodia
https://www.proxydocker.com/de/proxylist/country/Philippines
https://www.proxydocker.com/de/freeproxylist/South%20Africa
https://www.proxydocker.com/de/proxylist/city/Paris
https://www.proxydocker.com/en/proxylist/type/HTTP
https://www.proxydocker.com/de/proxylist/country/Poland
http://www.proxydocker.com/de
https://www.proxydocker.com/de/proxylist/country/France
https://www.proxydocker.com/de/proxylist/country/Vietnam
https://www.proxydocker.com/de/proxylist/country/Singapore
http://www.proxz.com/proxy_list_transparent_4_ext.html
http://www.proxz.com/proxy_list_port_std_104_ext.html
http://www.proxz.com/proxy_list_transparent_45_ext.html
https://www.proxydocker.com/de/proxylist/city/Singapore
https://www.proxydocker.com/de/proxylist/country/Australia
https://www.proxydocker.com/de/socks5-list/
https://www.proxydocker.com/en/proxylist/country/France
https://www.proxydocker.com/en/proxylist/state/Texas
https://www.proxydocker.com/en/proxylist/city/Moscow
https://www.proxydocker.com/en/proxylist/country/Iran
http://www.proxz.com/proxy_list_cn_ssl_1_ext.html
http://www.httptunnel.ge/ProxyListForFree.aspx/Media/httptunnelbanner.swf
http://www.httptunnel.ge/proxylistforfree.aspx/Media/Media/httptunnelbanner.swf
http://www.httptunnel.ge/proxylistforfree.aspx/media/Media/ProxyChecker.aspx
http://www.httptunnel.ge/proxylistforfree.aspx/Media/Media/ProxyListForFree.aspx
http://www.httptunnel.ge/proxylistforfree.aspx/Media/Media/Default.aspx
http://www.httptunnel.ge/proxylistforfree.aspx/Media/Media/dpg.aspx
http://www.httptunnel.ge/proxylistforfree.aspx/media/Media/Media/Default.aspx
http://www.httptunnel.ge/proxylistforfree.aspx/media/Media/Media/dpg.aspx
https://www.proxydocker.com/en/socks5-list/
https://www.proxydocker.com/?_locale=pt
http://www.httptunnel.ge/ProxyListForFree.aspx/ProxyChecker.aspx
http://www.httptunnel.ge/ProxyListForFree.aspx/FAQ.aspx
http://www.httptunnel.ge/proxylistforfree.aspx/media/Download.aspx
http://www.proxz.com/proxy_list_port_nonstd_23_ext.html
http://www.proxz.com/proxy_list_transparent_129_ext.html
http://www.proxz.com/proxy_list_high_anonymous_57_ext.html
http://www.proxz.com/proxy_list_transparent_16_ext.html
http://www.proxz.com/proxy_list_port_std_54_ext.html
http://www.proxz.com/proxy_list_high_anonymous_3.html
https://proxypedia.org/
http://proxysearcher.sourceforge.net/Proxy%20List.php?type=http
https://www.proxydocker.com/en/proxylist/state/California
https://www.proxydocker.com/en/proxylist/country/South%20korea
https://www.proxydocker.com/en/proxylist/port/80
https://www.proxydocker.com/en/proxylist/city/New%20York
https://www.proxydocker.com/en/proxylist/country/United%20Kingdom
https://www.proxydocker.com/ja/proxylist/country/Japan
https://www.proxydocker.com/en/proxylist/country/Brazil
https://www.proxydocker.com/en/proxylist/port/8080
https://www.proxydocker.com/ja/
https://www.proxydocker.com/en/proxylist/country/Germany
https://www.proxydocker.com/en/proxylist/country/Egypt
https://www.proxydocker.com/en/proxylist/country/Kazakhstan
https://www.proxydocker.com/en/proxylist/country/Paraguay
https://www.proxydocker.com/en/proxylist/country/Malaysia
https://www.proxydocker.com/de/proxylist/port/8080,3128,80
https://www.proxydocker.com/de/proxylist/
https://www.proxydocker.com/de/proxylist/country/Egypt
https://www.proxydocker.com/de/proxylist/city/Bangkok
http://www.proxz.com/proxy_list_transparent_164_ext.html
https://www.proxydocker.com/en/proxylist/city/Lima
https://www.proxydocker.com/de/proxylist/country/India
http://www.proxz.com/proxy_list_high_anonymous_130_ext.html
http://www.proxz.com/proxy_list_cn_ssl_59_ext.html
https://www.proxydocker.com/en/proxylist/city/Yekaterinburg
http://www.proxz.com/proxy_list_port_std_156_ext.html
http://www.proxz.com/proxy_list_high_anonymous_155_ext.html
http://www.proxz.com/proxy_list_transparent_18_ext.html
http://www.proxz.com/proxy_list_port_std_65_ext.html
http://www.proxz.com/proxy_list_high_anonymous_99_ext.html
http://www.proxz.com/proxy_list_port_std_42_ext.html
http://www.proxz.com/proxy_list_transparent_132.html
http://www.proxz.com/proxy_list_transparent_85_ext.html
http://www.proxz.com/proxy_list_port_nonstd_87_ext.html
http://www.proxz.com/proxy_list_transparent_128.html
http://www.proxz.com/proxy_list_high_anonymous_75_ext.html
http://www.proxz.com/proxy_list_port_nonstd_103_ext.html
http://www.proxz.com/proxy_list_transparent_76_ext.html
http://www.proxz.com/proxy_list_port_nonstd_11_ext.html
http://www.proxz.com/proxy_list_port_nonstd_90_ext.html
http://www.proxz.com/proxy_list_high_anonymous_93_ext.html
http://www.proxz.com/proxy_list_port_nonstd_146_ext.html
http://www.proxz.com/proxy_list_high_anonymous_124_ext.html
http://www.proxz.com/proxy_list_fr_4.html
https://www.proxydocker.com/en/proxylist/country/China
https://www.proxydocker.com/en/proxylist/country/Albania
http://www.premiumproxy.net/top-country-proxy-list?country=DE/
http://www.premiumproxy.net/top-country-proxy-list?country=HN/
http://www.premiumproxy.net/top-country-proxy-list.php?country=HK/
http://www.premiumproxy.net/top-country-proxy-list?cntr=-braziljikarkarkA
http://www.premiumproxy.net/top-country-proxy-list.php?country=FM
http://www.premiumproxy.net/top-country-proxy-list.php?country=KR/
http://premiumproxy.net/
http://premiumproxy.net/contact-us
http://premiumproxy.net/web-proxy-list
http://premiumproxy.net/full-proxy-list
http://premiumproxy.net/elite-proxy-list
http://premiumproxy.net/check-headers-status
http://premiumproxy.net/distorting-proxy-list
http://premiumproxy.net/http-proxy-list
http://premiumproxy.net/transparent-proxy-list.php
http://www.premiumproxy.net/top-country-proxy-list?cntr=-bolivia_AND_AARK
http://www.premiumproxy.net/top-country-proxy-list?cntr=FR-France_A_or&page=0
http://www.premiumproxy.net/top-country-proxy-list?cntr=CA-A&page=3
http://www.premiumproxy.net/top-country-proxy-list?cntr=JP-JapanRK
http://www.proxz.com/proxy_list_port_nonstd_7_ext.html
http://www.proxydocker.com/en/proxylist/country/China
http://www.proxz.com/proxy_list_high_anonymous_104_ext.html
http://premiumproxy.net/top-country-proxy-list?cntr=BG-
http://premiumproxy.net/top-country-proxy-list?cntr=RU-
http://premiumproxy.net/top-country-proxy-list?cntr=GR-
http://premiumproxy.net/http-proxy-list.php?page=2
http://premiumproxy.net/full-proxy-list.php?page=2
http://premiumproxy.net/socks-proxy-list.php?page=1
http://premiumproxy.net/top-country-proxy-list?country=EG
http://premiumproxy.net/top-country-proxy-list?country=BR
http://premiumproxy.net/top-country-proxy-list?cntr=A-
http://premiumproxy.net/top-country-proxy-list?country=PK/
https://www.proxydocker.com/de/proxylist/country/United%20States
http://www.premiumproxy.net/top-country-proxy-list.php?country=CN&page=1
http://www.premiumproxy.net/top-country-proxy-list?cntr=LT-Lithuania&page=3
http://www.premiumproxy.net/top-country-proxy-list?cntr=CH-&page=1
http://premiumproxy.net/top-country-proxy-list?cntr=BR-
http://premiumproxy.net/top-country-proxy-list?cntr=SE-
http://premiumproxy.net/top-country-proxy-list?country=UK
http://www.proxz.com/proxy_list_port_std_67_ext.html
http://www.proxz.com/proxy_list_port_std_49_ext.html
http://premiumproxy.net/top-country-proxy-list?cntr=BO-
http://premiumproxy.net/top-country-proxy-list?cntr=SELECT-
https://www.proxydocker.com/en/proxylist/country/Japan
http://premiumproxy.net/top-country-proxy-list?cntr=-vietnam_and__and_skrkskrk
http://premiumproxy.net/top-country-proxy-list?cntr=-singapore
http://premiumproxy.net/top-country-proxy-list?cntr=IT-Italy
http://premiumproxy.net/top-country-proxy-list.php?country=AF
http://premiumproxy.net/top-country-proxy-list?cntr=-tanzaniaa
http://premiumproxy.net/top-country-proxy-list.php?country=SG
http://premiumproxy.net/top-country-proxy-list?cntr=PA-Panama
http://premiumproxy.net/check-headers-status.php?url=nekopoi.lol
http://premiumproxy.net/top-country-proxy-list?cntr=VN-Vietnam_AND__AND_zOUNzOUNRK
http://premiumproxy.net/top-country-proxy-list?cntr=MX-Mexico_AND__AND_sUjBsUjBRK
https://www.proxydocker.com/de/proxylist/port/8888,3128
http://www.httptunnel.ge/proxylistforfree.aspx/media/dpg.aspx
http://premiumproxy.net/top-country-proxy-list?cntr=FR-
https://www.proxydocker.com/en/proxylist/city/Surabaya
http://www.httptunnel.ge/proxylistforfree.aspx/
https://www.proxydocker.com/de/proxylist/city/London
http://premiumproxy.net/top-country-proxy-list?cntr=%20R-
http://premiumproxy.net/top-country-proxy-list?cntr=-dominicanrk
http://premiumproxy.net/top-country-proxy-list?cntr=-guatemala
http://premiumproxy.net/top-country-proxy-list?cntr=-southwp
http://premiumproxy.net/top-country-proxy-list?cntr=BR-Brazil
http://premiumproxy.net/top-country-proxy-list.php?country=NL
http://premiumproxy.net/https-ssl-proxy-list.php?page=1
https://proxypedia.org/czechia/free-proxy-178-77-206-21-58004
http://premiumproxy.net/top-country-proxy-list?cntr=COA-
http://premiumproxy.net/top-country-proxy-list?cntr=MX-
http://premiumproxy.net/transparent-proxy-list.php?page=1
http://premiumproxy.net/top-country-proxy-list?country=ML
http://premiumproxy.net/top-country-proxy-list?cntr=-namibia
http://premiumproxy.net/top-country-proxy-list.php?country=IN
http://premiumproxy.net/top-country-proxy-list.php?country=TH
http://premiumproxy.net/top-country-proxy-list?cntr=JP-JapanRK
http://www.proxydocker.com/en/proxylist/country/Italy
http://www.proxz.com/proxy_list_high_anonymous_97_ext.html
http://www.proxz.com/proxy_list_cn_ssl_82_ext.html
http://www.proxz.com/terms.php
http://www.proxz.com/proxy_list_high_anonymous_117_ext.html
http://premiumproxy.net/top-country-proxy-list.php?country=UZ
http://premiumproxy.net/top-country-proxy-list?cntr=NA-Namibia
http://premiumproxy.net/top-country-proxy-list?country=FM
http://www.premiumproxy.net/check-ip-proxy-port?ip-proxy=Anonytun.com&port=443
http://www.premiumproxy.net/top-country-proxy-list?cntr=-thailand&page=5
http://www.premiumproxy.net/top-country-proxy-list?cntr=-braziljikarkaRKRK&page=5
http://www.premiumproxy.net/top-country-proxy-list?country=UK/&page=1
http://www.premiumproxy.net/top-country-proxy-list?cntr=-singapore&page=2
http://www.proxz.com/proxy_list_port_std_8.html
http://premiumproxy.net/http-proxy-list.php?page=1
http://www.premiumproxy.net/top-country-proxy-list?cntr=NL-Netherlands_ARKRK_
http://premiumproxy.net/anonymous-proxy-list.php
http://premiumproxy.net/top-country-proxy-list?cntr=-bolivia_AND_AARK
http://premiumproxy.net/top-country-proxy-list?cntr=-curacao
http://www.proxz.com/proxy_list_high_anonymous_108.html
http://premiumproxy.net/top-country-proxy-list?cntr=-bolivia_AND_A
http://premiumproxy.net/top-country-proxy-list.php?country=MQ
http://premiumproxy.net/top-country-proxy-list?cntr=-myanmar
http://premiumproxy.net/top-country-proxy-list?cntr=CN-China_
http://premiumproxy.net/top-country-proxy-list.php?country=TW
http://premiumproxy.net/top-country-proxy-list?cntr=-malta
http://premiumproxy.net/full-proxy-list.php?page=1
http://premiumproxy.net/top-country-proxy-list?cntr=JP-Japan
http://www.premiumproxy.net/top-country-proxy-list?cntr=KR-Southwp
http://premiumproxy.net/top-country-proxy-list.php?country=VN
http://premiumproxy.net/top-country-proxy-list.php?country=MX
http://premiumproxy.net/top-country-proxy-list?cntr=-turkey
http://premiumproxy.net/top-country-proxy-list?cntr=PH-Pilippines
http://premiumproxy.net/top-country-proxy-list?cntr=%20-_and_rkrs_ajlrnbcdatwcautelegvxdaso
http://premiumproxy.net/transparent-proxy-list
http://premiumproxy.net/squid-proxy-list
http://premiumproxy.net/top-country-proxy-list.php?country=
http://premiumproxy.net/top-country-proxy-list?cntr=-bolivia_and_aark
http://premiumproxy.net/top-country-proxy-list?cntr=KR-Southwp
http://premiumproxy.net/top-country-proxy-list?cntr=-south_koreaaaaa
http://premiumproxy.net/top-country-proxy-list.php?country=CL/
http://premiumproxy.net/top-country-proxy-list?cntr=-braziljikarkark

87
includes/misc.py Normal file
View File

@@ -0,0 +1,87 @@
#!/usr/bin/env python
import time, random, sys, os, string
#import sockschain as socks
sys.path.append('./includes')
import rocksock
""" return formatted timestamp """
def timestamp():
return time.strftime('%H:%M:%S', time.gmtime())
""" return some random string """
def random_string(strlen=20):
return ''.join([random.choice(string.letters) for x in xrange(strlen)])
def _log(strng, level='info'):
print '%s/%s\t%s' % (timestamp(), level, strng)
def option_matches_options(strng, items):
try: return [item for item in items if re.match(strng, item)]
except: return False
def prepare_socksocket(self, destination, path, path_item):
if path_item in self.paths and self.paths[path_item]['path'] == path:
self.paths[path_item]['path'] = False
#socks.setdefaultproxy()
# relay to i2p http proxy if *.i2p domain
if destination.endswith('i2p'):
proxy = random.choice(self.i2p_host).split(':')
path = False
# or go with tor
else:
proxies = [ rocksock.RocksockProxyFromURL('socks5://%s' % random.choice(self.tor_host)) ]
#socks.adddefaultproxy(*socks.parseproxy('tor://%s' % random.choice(self.tor_host)))
# add 'clearnet' proxies to the chain ?
if self.proxify and (not destination.endswith('onion') and not destination.endswith('.exit')):
# get a proxy path
path = build_path(self, path_item, path)
# if path isn't long enough, break
if not len(path): return False, False, False
# add chain...
#for inc in xrange(len(path) - 1): socks.adddefaultproxy(*socks.parseproxy('http://%s' % path[inc]))
#for inc in xrange(len(path) - 1): socks.adddefaultproxy(*socks.parseproxy('%s://%s' % (path[inc][1], path[inc][0])))
for inc in xrange(len(path)): proxies.append( rocksock.RocksockProxyFromURL('%s://%s' % (path[inc][1], path[inc][0])))
#return True, socks.socksocket, path
return True, proxies, path
def build_path(self, path_item, path):
chainlen = random.randint( self.path_len, (self.path_len + self.path_randomlen))
# if not enough proxies
# FIXME: try to get a proxylist from database
if len(self.proxylist) < chainlen: return []
# valid path already available
elif (path_item in self.paths and
self.paths[path_item]['path'] and
(time.time() - self.paths[path_item]['ticks']) < self.path_duration):
# take available path if any
if path != self.paths[path_item]['path']: path = self.paths[path_item]['path']
# or nope, none available
# build a new one from scratch
else:
path = []
avail = []
# dec chainlen if we have to select the exit proxy
if self.exitcountry is not None: chainlen -= 1
#avail = [item[0] for item in self.proxylist if not item[0] in avail and item[1] != str(self.exitcountry).upper()]
avail = [[item[0],item[2]] for item in self.proxylist if not item[0] in avail and item[1] != str(self.exitcountry).upper()]
path = random.sample(avail, chainlen)
# choose the exit proxy
if self.exitcountry is not None:
#avail = [item[0] for item in self.proxylist if not item[0] in path and item[1] == str(self.exitcountry).upper()]
avail = [[item[0],item[2]] for item in self.proxylist if not item[0] in path and item[1] == str(self.exitcountry).upper()]
if not len(avail): return []
path.append(random.choice(avail))
return path

33
includes/mysqlite.py Normal file
View File

@@ -0,0 +1,33 @@
import time, random, sys
import sqlite3 as lite
class mysqlite:
def execute(self, query, args = None, rmin = 1.5, rmax = 7.0):
while True:
try: return self.cursor.execute(query,args) if args else self.cursor.execute(query)
except:
print '%s\nquery: %s\nargs: %s' % (str(sys.exc_info()), str(query), str(args))
time.sleep(random.uniform(rmin, rmax))
def executemany(self, query, args, rmin = 1.5, rmax = 7.0):
while True:
try: return self.cursor.executemany(query,args)
except:
print '%s\nquery: %s\nargs: %s' % (str(sys.exc_info()), str(query), str(args))
time.sleep(random.uniform(rmin, rmax))
def commit(self, rmin = 1.5, rmax = 7.0):
while True:
try: return self.handle.commit()
except: time.sleep(random.uniform(rmin, rmax))
def close(self):
self.handle.close()
def __init__(self, database, factory = None):
self.handle = lite.connect(database)
if factory: self.handle.text_factory = factory
self.cursor = self.handle.cursor()

165
includes/proxywatchd.py Normal file
View File

@@ -0,0 +1,165 @@
#!/usr/bin/env python
from threading import Thread
import threading, commands
import socket, time, random, sys, string, re
#import sockschain as socks
import requests
#from geoip import geolite2
from ConfigParser import SafeConfigParser
sys.path.append('./includes')
import mysqlite
from misc import _log
import rocksock
class Proxywatchd(Thread):
def stop(self):
_log('Requesting proxywatchd to halt (%d thread(s))' % len([item for item in self.threads if item.isAlive()]))
self.running = 0
def __init__(self, config_file):
Thread.__init__(self)
self.threads = []
self.running = 1
self.parser = SafeConfigParser()
self.parser.read(config_file)
self.maxfail = self.parser.getint('global', 'proxy_max_fail')
self.maxthreads = self.parser.getint('watcherd', 'threads')
self.checktime = self.parser.getint('watcherd', 'checktime')
self.timeout = self.parser.getint('watcherd', 'timeout')
self.database = self.parser.get('global', 'database')
self.torhosts = [ str(i).strip() for i in self.parser.get('global', 'tor_host').split(',') ]
self.read_timeout = self.parser.getint('watcherd', 'read_timeout')
# create table if needed
self.mysqlite = mysqlite.mysqlite(self.database, str)
self.mysqlite.execute('CREATE TABLE IF NOT EXISTS proxylist (proxy BLOB, country BLOB, added INT, failed INT, tested INT, source BLOB, dronebl INT, proto TEXT, duration INT)')
self.mysqlite.commit()
self.echoise = time.time() - 3600;
self.ticks = time.time() - 3600;
with open('servers.txt', 'r') as handle: self.servers = handle.read().split('\n')
self.start()
def run(self):
_log('Starting proxywatchd..', 'notice')
threads = []
self.mysqlite = mysqlite.mysqlite(self.database, str)
while self.running:
if len(threads) < self.maxthreads:
t = threading.Thread(target=self.daemon, args=(self.servers,))
t.start()
threads.append(t)
time.sleep( random.choice( xrange(1,3)))
else: time.sleep(1)
if (time.time() - self.echoise) >= 180:
_log('Proxywatchd threads: %d/%d' % (len(threads), self.maxthreads))
self.echoise = time.time()
self.mysqlite.close()
def is_drone_bl(self, proxy):
p = proxy.split(':')[0]
proxies = {'http':'socks4://%s:%s@%s' % (p,p,random.choice(self.torhosts))}
resp = requests.get('http://dronebl.org/lookup?ip=%s' % p, proxies=proxies)
if 'No incidents regarding' in resp.text: return 0
else: return 1
def connect_socket(self, proxy, servers, proto = None):
proto = ['http', 'socks5', 'socks4']
for p in proto:
torhost = random.choice(self.torhosts)
duration = time.time()
proxies = [ rocksock.RocksockProxyFromURL('socks4://%s' % torhost),
rocksock.RocksockProxyFromURL('%s://%s' % (p, proxy[0])),
]
tst = random.choice(servers).strip()
try:
sock = rocksock.Rocksock(host=tst, port=6667, ssl=False, proxies=proxies, timeout=self.timeout)
sock.connect()
sock.send('%s\n' % random.choice(['NICK', 'USER', 'JOIN', 'MODE', 'PART', 'INVITE', 'KNOCK', 'WHOIS', 'WHO', 'NOTICE', 'PRIVMSG', 'PING', 'QUIT']))
return sock, p, duration, torhost, tst
except:
#print('socket error, disconnecting')
sock.disconnect()
return False, False, False, False, False
def daemon(self, servers):
sqlite = mysqlite.mysqlite(self.database, str)
threadid = ''.join( [ random.choice(string.letters) for x in range(5) ] )
q = 'SELECT proxy,failed,country,proto FROM proxylist WHERE failed<? and tested<? ORDER BY RANDOM() LIMIT ?'
while self.running:
time.sleep(0.1)
sqlite_requests = []
rows = sqlite.execute(q, (self.maxfail, time.time(), random.randint(10,20))).fetchall()
if not len(rows):
time.sleep(random.randint(10,20))
continue
abc = ' OR proxy='.join( [ '?' for x in xrange(0, len(rows)) ] )
args = [ (time.time() + 180) ]
e = [ args.append(i[0]) for i in rows ]
sqlite.executemany('UPDATE proxylist SET tested=? WHERE proxy=%s' % abc, (args,))
sqlite.commit()
for proxy in rows:
time.sleep(0.1)
nextcheck = (time.time() + 1800 + ((1+int(proxy[1])) * 3600))
sock, proto, duration, tor, tst = self.connect_socket(proxy, servers, proto=proxy[3])
if not sock:
sqlite_requests.append(((proxy[1]+1), nextcheck, 1, 'unknown', 'http', 0, proxy[0],))
continue
try:
recv = sock.recv(6)
# good data
if re.match('^(:|ERROR|PING|PONG|NOTICE|\*\*\*)', recv, re.IGNORECASE):
duration = (time.time() - duration)
nextcheck = (time.time() + 1800)
#match = geolite2.lookup(proxy[0].split(':')[0])
match = None
if match is not None: match = match.country
else: match = 'unknown'
#dronebl = self.is_drone_bl(proxy[0])
sqlite_requests.append( (0, time.time(), 1, match, proto, duration, proxy[0],))
_log('%s://%s; c: %s; d: %d sec(s); tor: %s; irc: %s; recv: %s' % (proto, proxy[0], match, duration, tor, tst, recv), threadid)
# bad data
else:
sqlite_requests.append(( (proxy[1]+1), nextcheck, 1, 'unknown', 'http', 0, proxy[0],))
# also bad
except:
sqlite_requests.append(( (proxy[1]+1), nextcheck, 1, 'unknown', 'http', 0, proxy[0],))
finally:
sock.disconnect()
for r in sqlite_requests:
sqlite.execute('UPDATE proxylist SET failed=?,tested=?,dronebl=?,country=?,proto=?,duration=? WHERE proxy=?', r)
sqlite.commit()
sqlite.close()

437
includes/rocksock.py Normal file
View File

@@ -0,0 +1,437 @@
import socket, ssl, select
# rs_proxyType
RS_PT_NONE = 0
RS_PT_SOCKS4 = 1
RS_PT_SOCKS5 = 2
RS_PT_HTTP = 3
# rs_errorType
RS_ET_OWN = 0 # rocksock-specific error
RS_ET_SYS = 1 # system error with errno
RS_ET_GAI = 2 # dns resolution subsystem error
RS_ET_SSL = 3 # ssl subsystem error
# rs_error
RS_E_NO_ERROR = 0
RS_E_NULL = 1
RS_E_EXCEED_PROXY_LIMIT = 2
RS_E_NO_SSL = 3
RS_E_NO_SOCKET = 4
RS_E_HIT_TIMEOUT = 5
RS_E_OUT_OF_BUFFER = 6
RS_E_SSL_GENERIC = 7
RS_E_SOCKS4_NOAUTH = 8
RS_E_SOCKS5_AUTH_EXCEEDSIZE = 9
RS_E_SOCKS4_NO_IP6 = 10
RS_E_PROXY_UNEXPECTED_RESPONSE = 11
RS_E_TARGETPROXY_CONNECT_FAILED = 12
RS_E_PROXY_AUTH_FAILED = 13
RS_E_HIT_READTIMEOUT = 14
RS_E_HIT_WRITETIMEOUT = 15
RS_E_HIT_CONNECTTIMEOUT = 16
RS_E_PROXY_GENERAL_FAILURE = 17
RS_E_TARGETPROXY_NET_UNREACHABLE = 18
RS_E_TARGETPROXY_HOST_UNREACHABLE = 19
RS_E_TARGETPROXY_CONN_REFUSED = 20
RS_E_TARGETPROXY_TTL_EXPIRED = 21
RS_E_PROXY_COMMAND_NOT_SUPPORTED = 22
RS_E_PROXY_ADDRESSTYPE_NOT_SUPPORTED = 23
RS_E_REMOTE_DISCONNECTED = 24
RS_E_NO_PROXYSTORAGE = 25
RS_E_HOSTNAME_TOO_LONG = 26
RS_E_INVALID_PROXY_URL = 27
class RocksockException(Exception):
def __init__(self, error, failedproxy=None, errortype=RS_ET_OWN, *args, **kwargs):
Exception.__init__(self,*args,**kwargs)
self.error = error
self.errortype = errortype
self.failedproxy = failedproxy
def get_failedproxy(self):
return self.failedproxy
def get_error(self):
return self.error
def reraise(self):
import sys
ei = sys.exc_info()
raise ei[0], ei[1], ei[2]
# import traceback, sys
# traceback.print_exc(file=sys.stderr)
# raise self
def get_errormessage(self):
errordict = {
RS_E_NO_ERROR : "no error",
RS_E_NULL: "NULL pointer passed",
RS_E_EXCEED_PROXY_LIMIT: "exceeding maximum number of proxies",
RS_E_NO_SSL: "can not establish SSL connection, since library was not compiled with USE_SSL define",
RS_E_NO_SOCKET: "socket is not set up, maybe you should call connect first",
RS_E_HIT_TIMEOUT: "timeout reached on operation",
RS_E_OUT_OF_BUFFER: "supplied buffer is too small",
RS_E_SSL_GENERIC: "generic SSL error", # the C version uses this error when the SSL library does not report any specific error, otherwise errortype SSL will be set and the SSL errorcode be used
RS_E_SOCKS4_NOAUTH:"SOCKS4 authentication not implemented",
RS_E_SOCKS5_AUTH_EXCEEDSIZE: "maximum length for SOCKS5 servername/password/username is 255",
RS_E_SOCKS4_NO_IP6: "SOCKS4 is not compatible with IPv6",
RS_E_PROXY_UNEXPECTED_RESPONSE: "the proxy sent an unexpected response",
RS_E_TARGETPROXY_CONNECT_FAILED: "could not connect to target proxy",
RS_E_PROXY_AUTH_FAILED: "proxy authentication failed or authd not enabled",
RS_E_HIT_READTIMEOUT : "timeout reached on read operation",
RS_E_HIT_WRITETIMEOUT : "timeout reached on write operation",
RS_E_HIT_CONNECTTIMEOUT : "timeout reached on connect operation",
RS_E_PROXY_GENERAL_FAILURE : "proxy general failure",
RS_E_TARGETPROXY_NET_UNREACHABLE : "proxy-target: net unreachable",
RS_E_TARGETPROXY_HOST_UNREACHABLE : "proxy-target: host unreachable",
RS_E_TARGETPROXY_CONN_REFUSED : "proxy-target: connection refused",
RS_E_TARGETPROXY_TTL_EXPIRED : "proxy-target: TTL expired",
RS_E_PROXY_COMMAND_NOT_SUPPORTED : "proxy: command not supported",
RS_E_PROXY_ADDRESSTYPE_NOT_SUPPORTED : "proxy: addresstype not supported",
RS_E_REMOTE_DISCONNECTED : "remote socket closed connection",
RS_E_NO_PROXYSTORAGE : "no proxy storage assigned",
RS_E_HOSTNAME_TOO_LONG : "hostname exceeds 255 chars",
RS_E_INVALID_PROXY_URL : "invalid proxy URL string"
}
if self.errortype == RS_ET_SYS:
import errno
if self.error in errno.errorcode:
msg = "ERRNO: " + errno.errorcode[self.error]
else:
msg = "ERRNO: invalid errno: " + str(self.error)
elif self.errortype == RS_ET_GAI:
msg = "GAI: " + self.failedproxy
elif self.errortype == RS_ET_SSL:
msg = errordict[self.error]
if self.error == RS_E_SSL_GENERIC and self.failedproxy != None:
msg += ': ' + self.failedproxy #failedproxy is repurposed for SSL exceptions
else: #RS_ET_OWN
msg = errordict[self.error]
return msg
class RocksockHostinfo():
def __init__(self, host, port):
self.host = host
self.port = port
class RocksockProxy():
def __init__(self, host, port, type, username = None, password=None, **kwargs):
typemap = { 'none' : RS_PT_NONE,
'socks4' : RS_PT_SOCKS4,
'socks5' : RS_PT_SOCKS5,
'http' : RS_PT_HTTP }
self.type = typemap[type] if type in typemap else type
self.username = username
self.password = password
self.hostinfo = RocksockHostinfo(host, port)
def RocksockProxyFromURL(url):
# valid URL: socks5://[user:pass@]hostname:port
x = url.find('://')
if x == -1: return None
t = url[:x]
url = url[x+len('://'):]
x = url.rfind(':')
if x == -1: return None # port is obligatory
port = int(url[x+len(':'):]) #TODO: catch exception when port is non-numeric
url = url[:x]
x = url.find('@')
if x != -1:
u, p = url[:x].split(':')
url = url[x+len('@'):]
else:
u, p = (None, None)
return RocksockProxy(host=url, port=port, type=t, username=u, password=p)
class Rocksock():
def __init__(self, host=None, port=0, verifycert=False, timeout=0, proxies=None, **kwargs):
if 'ssl' in kwargs and kwargs['ssl'] == True:
self.sslcontext = ssl.create_default_context()
self.sslcontext.check_hostname = False
if not verifycert: self.sslcontext.verify_mode = ssl.CERT_NONE
else:
self.sslcontext = None
self.proxychain = proxies if proxies else []
target = RocksockProxy(host, port, RS_PT_NONE)
self.proxychain.append(target)
self.sock = None
self.timeout = timeout
def connect(self):
af, sa = self._resolve(self.proxychain[0].hostinfo, True)
try:
x = af+1
except TypeError:
raise RocksockException(-3, "unexpected problem resolving DNS, try again", errortype=RS_ET_GAI)
# print "GOT A WEIRD AF"
# print af
# raise RocksockException(-6666, af, errortype=RS_ET_GAI)
self.sock = socket.socket(af, socket.SOCK_STREAM)
self.sock.settimeout(None if self.timeout == 0 else self.timeout)
try:
self.sock.connect((sa[0], sa[1]))
except socket.timeout:
raise RocksockException(RS_E_HIT_TIMEOUT)
except socket.error as e:
raise RocksockException(e.errno, errortype=RS_ET_SYS)
for pnum in xrange(1, len(self.proxychain)):
curr = self.proxychain[pnum]
prev = self.proxychain[pnum-1]
self._connect_step(pnum)
if self.sslcontext:
try:
self.sock = self.sslcontext.wrap_socket(self.sock, server_hostname=self.proxychain[len(self.proxychain)-1].hostinfo.host)
except ssl.SSLError as e:
reason = self._get_ssl_exception_reason(e)
#if hasattr(e, 'library'): subsystem = e.library
raise RocksockException(RS_E_SSL_GENERIC, reason, errortype=RS_ET_SSL)
except socket.error as e:
raise RocksockException(e.errno, errortype=RS_ET_SYS)
except Exception as e:
raise e
"""
while True:
try:
self.sock.do_handshake()
break
except ssl.SSLWantReadError:
select.select([self.sock], [], [])
except ssl.SSLWantWriteError:
select.select([], [self.sock], [])
"""
def disconnect(self):
if self.sock is None: return
try:
self.sock.shutdown(socket.SHUT_RDWR)
except socket.error:
pass
self.sock.close()
self.sock = None
def canread(self):
return select.select([self.sock], [], [], 0)[0]
def send(self, buf):
if self.sock is None:
raise RocksockException(RS_E_NO_SOCKET)
return self.sock.sendall(buf)
def _get_ssl_exception_reason(self, e):
s = ''
if hasattr(e, 'reason'): s = e.reason
elif hasattr(e, 'message'): s = e.message
elif hasattr(e, 'args'): s = e.args[0]
return s
def recv(self, count=-1):
data = ''
while count:
try:
n = count if count != -1 else 4096
if n >= 1024*1024: n = 1024*1024
chunk = self.sock.recv(n)
except socket.timeout:
raise RocksockException(RS_E_HIT_TIMEOUT)
except ssl.SSLError as e:
s = self._get_ssl_exception_reason(e)
if s == 'The read operation timed out':
raise RocksockException(RS_E_HIT_READTIMEOUT)
else:
raise RocksockException(RS_E_SSL_GENERIC, s, errortype=RS_ET_SSL)
if len(chunk) == 0:
raise RocksockException(RS_E_REMOTE_DISCONNECTED)
data += chunk
if count == -1: break
else: count -= len(chunk)
return data
def recvline(self):
s = ''
c = '\0'
while c != '\n':
c = self.recv(1)
if c == '': return s
s += c
return s
def recvuntil(self, until):
s = self.recv(len(until))
endc = until[-1:]
while not (s[-1:] == endc and s.endswith(until)):
s += self.recv(1)
return s
def _isnumericipv4(self, ip):
try:
a,b,c,d = ip.split('.')
if int(a) < 256 and int(b) < 256 and int(c) < 256 and int(d) < 256:
return True
return False
except:
return False
def _resolve(self, hostinfo, want_v4=True):
if self._isnumericipv4(hostinfo.host):
return socket.AF_INET, (hostinfo.host, hostinfo.port)
try:
for res in socket.getaddrinfo(hostinfo.host, hostinfo.port, \
socket.AF_UNSPEC, socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
af, socktype, proto, canonname, sa = res
if want_v4 and af != socket.AF_INET: continue
if af != socket.AF_INET and af != socket.AF_INET6: continue
else: return af, sa
except socket.gaierror as e:
eno, str = e.args
raise RocksockException(eno, str, errortype=RS_ET_GAI)
return None, None
def _ip_to_int(self, ip):
a,b,c,d = ip.split('.')
h = "0x%.2X%.2X%.2X%.2X"%(int(a),int(b),int(c),int(d))
return int(h, 16)
def _ip_to_bytes(self, ip):
ip = self._ip_to_int(ip)
a = (ip & 0xff000000) >> 24
b = (ip & 0x00ff0000) >> 16
c = (ip & 0x0000ff00) >> 8
d = (ip & 0x000000ff) >> 0
return chr(a) + chr(b) + chr(c) + chr(d)
def _setup_socks4_header(self, v4a, dest):
buf = '\x04\x01'
buf += chr(dest.hostinfo.port / 256)
buf += chr(dest.hostinfo.port % 256)
if v4a:
buf += '\0\0\0\x01'
else:
af, sa = self._resolve(dest, True)
if af != socket.AF_INET: raise RocksockException(RS_E_SOCKS4_NO_IP6)
buf += self._ip_to_bytes(sa[0])
buf += '\0'
if v4a: buf += dest.hostinfo.host + '\0'
return buf
def _connect_socks4(self, header, pnum):
self.send(header)
res = self.recv(8)
if len(res) < 8 or ord(res[0]) != 0:
raise RocksockException(RS_E_PROXY_UNEXPECTED_RESPONSE, pnum-1)
ch = ord(res[1])
if ch == 0x5a:
pass
elif ch == 0x5b:
raise RocksockException(RS_E_TARGETPROXY_CONNECT_FAILED, pnum-1)
elif ch == 0x5c or ch == 0x5d:
return RocksockException(RS_E_PROXY_AUTH_FAILED, pnum-1)
else:
raise RocksockException(RS_E_PROXY_UNEXPECTED_RESPONSE, pnum-1)
def _setup_socks5_header(self, proxy):
buf = '\x05'
if proxy.username and proxy.password:
buf += '\x02\x00\x02'
else:
buf += '\x01\x00'
return buf
def _connect_socks5(self, header, pnum):
self.send(header)
res = self.recv(2)
if len(res) != 2 or res[0] != '\x05':
raise RocksockException(RS_E_PROXY_UNEXPECTED_RESPONSE, pnum-1)
if res[1] == '\xff':
raise RocksockException(RS_E_PROXY_AUTH_FAILED, pnum-1)
if ord(res[1]) == 2:
px = self.proxychain[pnum-1]
if px.username and px.password:
pkt = '\x01%c%s%c%s'%(len(px.username),px.username,len(px.password),px.password)
self.send(pkt)
res = self.recv(2)
if len(res) < 2 or res[1] != '\0':
raise RocksockException(RS_E_PROXY_AUTH_FAILED, pnum-1)
else: raise RocksockException(RS_E_PROXY_AUTH_FAILED, pnum-1)
dst = self.proxychain[pnum]
numeric = self._isnumericipv4(dst.hostinfo.host)
if numeric:
dstaddr = self._ip_to_bytes(dst.hostinfo.host)
else:
dstaddr = chr(len(dst.hostinfo.host)) + dst.hostinfo.host
pkt = '\x05\x01\x00%c%s%c%c'% (1 if numeric else 3, dstaddr, dst.hostinfo.port / 256, dst.hostinfo.port % 256)
self.send(pkt)
res = self.recv()
if len(res) < 2 or res[0] != '\x05':
raise RocksockException(RS_E_PROXY_UNEXPECTED_RESPONSE, pnum-1)
ch = ord(res[1])
if ch == 0: pass
elif ch == 1: raise RocksockException(RS_E_PROXY_GENERAL_FAILURE, pnum-1)
elif ch == 2: raise RocksockException(RS_E_PROXY_AUTH_FAILED, pnum-1)
elif ch == 3: raise RocksockException(RS_E_TARGETPROXY_NET_UNREACHABLE, pnum-1)
elif ch == 4: raise RocksockException(RS_E_TARGETPROXY_HOST_UNREACHABLE, pnum-1)
elif ch == 5: raise RocksockException(RS_E_TARGETPROXY_CONN_REFUSED, pnum-1)
elif ch == 6: raise RocksockException(RS_E_TARGETPROXY_TTL_EXPIRED, pnum-1)
elif ch == 7: raise RocksockException(RS_E_PROXY_COMMAND_NOT_SUPPORTED, pnum-1)
elif ch == 8: raise RocksockException(RS_E_PROXY_ADDRESSTYPE_NOT_SUPPORTED, pnum-1)
else: raise RocksockException(RS_E_PROXY_UNEXPECTED_RESPONSE, pnum-1)
def _connect_step(self, pnum):
prev = self.proxychain[pnum -1]
curr = self.proxychain[pnum]
if prev.type == RS_PT_SOCKS4:
s4a = self._setup_socks4_header(True, curr)
try:
self._connect_socks4(s4a, pnum)
except RocksockException as e:
if e.get_error() == RS_E_TARGETPROXY_CONNECT_FAILED:
s4 = self._setup_socks4_header(self, False, curr)
self._connect_socks4(s4a, pnum)
else: raise e
elif prev.type == RS_PT_SOCKS5:
s5 = self._setup_socks5_header(prev)
self._connect_socks5(s5, pnum)
elif prev.type == RS_PT_HTTP:
dest = self.proxychain[pnum]
self.send("CONNECT %s:%d HTTP/1.1\r\n\r\n"%(dest.hostinfo.host, dest.hostinfo.port))
resp = self.recv()
if len(resp) <12:
raise RocksockException(RS_E_PROXY_UNEXPECTED_RESPONSE, pnum-1)
if resp[9] != '2':
raise RocksockException(RS_E_TARGETPROXY_CONNECT_FAILED, pnum-1)
if __name__ == '__main__':
proxies = [
# RocksockProxyFromURL("socks5://foo:bar@localhost:1080"),
# RocksockProxyFromURL("socks5://10.0.0.3:1080"),
RocksockProxyFromURL("socks5://127.0.0.1:31339"),
]
proxies = None
#rs = Rocksock(host='googleff242342423f.com', port=443, ssl=True, proxies=proxies)
rs = Rocksock(host='google.com', port=80, ssl=False, proxies=proxies)
try:
rs.connect()
except RocksockException as e:
print e.get_errormessage()
e.reraise()
rs.send('GET / HTTP/1.0\r\n\r\n')
print rs.recvline()
rs.disconnect()
rs.connect()
rs.send('GET / HTTP/1.0\r\n\r\n')
print rs.recvline()

245
ppf.py Executable file
View File

@@ -0,0 +1,245 @@
#!/usr/bin/env python
import os
import sys
import socket
import requests
import socks
import random, time
import sqlite3
import re
import urllib
import threading
import hashlib
import ipcalc
from soup_parser import soupify
from ConfigParser import SafeConfigParser
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
from dns import resolver
#from selenium import webdriver
sys.path.append('./includes')
import mysqlite
from misc import _log
base_header = {
'Accept-Language':'en-US,en;q=0.8',
'Cache-Control':'max-age=0',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'DNT': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0'
}
database = 'proxies.sqlite'
searx_instances = ('https://searx.me', 'https://searx.xyz', 'https://searx.site', 'https://searx.win', 'https://searx.ru', 'https://stemy.me/searx', 'https://searx.at', 'https://listi.me', 'https://searx.dk', 'https://searx.laquadrature.net' )
retry_messages = ('Engines cannot retrieve results', 'Rate limit exceeded')
proxies={ 'http': 'socks5://127.0.0.1:9050', 'https': 'socks5://127.0.0.1:9050', 'ftp': 'socks5://127.0.0.1:9050'}
# include own classes
sys.path.append('./includes')
import proxywatchd, mysqlite
from misc import _log
CONFIG = 'config.ini'
def cleanhtml(raw_html):
cleanr = re.compile('<.*?>')
cleantext = re.sub(cleanr, ':', raw_html)
cleantext = re.sub('::+',':', cleantext)
return cleantext
def import_from_file(fn, sqlite):
with open(fn, 'r') as f:
for u in f.read().split('\n'):
if not len(u): continue
exists = [ i[0] for i in sqlite.execute('SELECT url FROM uris WHERE url=?',(u,)).fetchall() ]
if exists: continue
print('adding "%s"' % u)
sqlite.execute('INSERT INTO uris (added,url,check_time,error) VALUES (?,?,?,?)', (time.time(),u,0,1))
sqlite.commit()
def fetch_contents(uri, driver=None):
headers = base_header
## use requests (default)
if not driver:
try: resp = requests.get(uri, timeout=45, headers=headers, verify=False, proxies=proxies)
except: return ''
data = resp.text
## phantomjs
else:
for key, value in enumerate(base_header):
capability_key = 'phantomjs.page.customHeaders.{}'.format(key)
webdriver.DesiredCapabilities.PHANTOMJS[capability_key] = value
service_args = ['--proxy=127.0.0.1:9050', '--proxy-type=socks5']
driver = webdriver.PhantomJS()
try:
driver.implicitly_wait(45)
driver.set_page_load_timeout(45)
driver.get(uri)
data = driver.page_source
except: data = ''
finally:driver.quit()
for retry_message in retry_messages:
if retry_message in data: return ''
return data
def update_proxy_sources(sqlite, proxies, uri):
for proxy in proxies:
md5sum = hashlib.md5(proxy).hexdigest()
sqlite.execute('CREATE TABLE IF NOT EXISTS "%s" (uri TEXT)' % md5sum)
sqlite.commit()
#check = [ i for i in sqlite.execute('SELECT uri FROM "%s" WHERE uri=?' % md5sum, (uri,)).fetchall() ]
check = sqlite.execute('SELECT uri FROM "%s" WHERE uri=?' % md5sum, (uri,)).fetchall()
if not len(check):
sqlite.execute('INSERT INTO "%s" (uri) VALUES(?)' % md5sum, (uri,))
sqlite.commit()
def insert_proxies(proxies, uri, sqlite):
time_now = time.time()
added = 0
## very wasteful
#update_proxy_sources(sqlite, proxies, uri)
query = [ 'proxy=?' for p in proxies ]
known = [ i[0] for i in sqlite.execute('SELECT proxy FROM proxylist WHERE %s' % ' OR '.join(query), proxies).fetchall() ]
new = [ (time_now,i,3,0) for i in proxies if not i in known ]
if len(new):
added = added + len(new)
sqlite.executemany('INSERT INTO proxylist (added,proxy,failed,tested) VALUES (?,?,?,?)', new)
sqlite.commit()
if added > 0: _log('+%d item(s) from %s' % (added, uri), 'added')
def proxyfind(sqlite = None):
#print('entering proxyfind...')
if not sqlite: sqlite = mysqlite.mysqlite(database,str)
uris = [ i[0] for i in sqlite.execute('SELECT url FROM uris WHERE error=0 and url not like "%github%" ORDER BY RANDOM() LIMIT 10').fetchall() ]
if len(uris) > 0 and random.random() < random.random():
search = urllib.quote_plus('site:%s' % random.choice(uris).split('/')[2])
else:
search = urllib.quote_plus(random.choice(search_terms))
choice = random.choice(searx_instances)
urls = []
content = fetch_contents('%s/?q=%s&pageno=%d' % (choice, search, random.randint(0,10)))
if not content: return
soup = soupify(content)
for a in soup.body.find_all('a'):
if not 'rel' in a.attrs or not 'noreferrer' in a.attrs['rel'] or a.attrs['href'] in urls: continue
badurl = [ i for i in urignore if re.findall(i,a.attrs['href'], re.IGNORECASE) ]
if not len(badurl): urls.append(a.attrs['href'])
if len(urls):
query = [ 'url=?' for u in urls ]
known = [ i[0] for i in sqlite.execute('SELECT url FROM uris WHERE %s' % ' OR '.join(query),urls).fetchall() ]
time_now = time.time()
new = [ (time_now,i,0,5,0) for i in urls if not i in known ]
if len(new):
sqlite.executemany('INSERT INTO uris (added,url,check_time,error,driver) values(?,?,?,?,?)', new)
sqlite.commit()
_log('+%d item(s) from %s' % (len(new), search), 'added')
sqlite.commit()
def proxyleech(sqlite, rows):
#print('entering proxyleech...')
for row in rows:
try: content = fetch_contents(row[0], None)
except: content = ''
uniques = []
for p in sorted(re.findall(r'[0-9]+(?:\.[0-9]+){3}:[0-9]+', cleanhtml(content))):
if p in uniques: continue
try:
if str(ipcalc.Network(p.split(':')[0]).subnet) != 'PRIVATE': uniques.append(p)
except:
pass
hash = hashlib.md5(''.join(uniques)).hexdigest()
#print('unique; hash: %s, len: %d' % (hash, len(uniques)))
## empty list of proxies: increment error by two
if not len(uniques): row[2] = (row[2] * 2)
## same proxy list: increment error by one
elif hash == row[1]: row[2] = (row[2] + 1)
## proxylist was updated: error is zero
else: row[2] = 0
check_time = (time.time() + 3600 + (3600 * row[2]))
sqlite.execute('UPDATE uris SET error=?,hash=?,check_time=? where url=?', (row[2],hash, check_time,row[0]))
sqlite.commit()
if not row[1] or row[2] > 0: return
add = []
for i in uniques:
add.append(i)
if len(add) < 500: continue
insert_proxies(add, row[0], sqlite)
add = []
if len(add): insert_proxies(add, row[0], sqlite)
if __name__ == '__main__':
## read the config files
parser = SafeConfigParser()
parser.read(CONFIG)
database = parser.get('global', 'database')
search = parser.getboolean('proxyfind', 'search')
sqlite = mysqlite.mysqlite(database, str)
## create dbs if required
sqlite.execute('CREATE TABLE IF NOT EXISTS uris (added INT, url TEXT, check_time INT, error INT, driver INT, hash TEXT)')
sqlite.execute('CREATE TABLE IF NOT EXISTS proxylist (proxy BLOB, country BLOB, added INT, failed INT, tested INT, dronebl INT, proto TEXT, duration INT)')
sqlite.commit()
import_from_file('import.txt', sqlite)
## load search terms
with open('search_terms.txt', 'r') as f:
search_terms = [ i.strip() for i in f.read().split('\n') if len(i.strip()) ]
## load bad terms
with open('urignore.txt', 'r') as f:
urignore = [ i.strip() for i in f.read().split('\n') if len(i.strip()) ]
## add searx instances as bad terms (avoid loops)
empty = [ urignore.append(i.split('/')[2]) for i in searx_instances ]
# start proxy watcher
watcherd = proxywatchd.Proxywatchd(CONFIG) if parser.getboolean('watcherd', 'enabled') else None
while True:
try:
## any site that needs to be checked ?
rows = [ [i[0],i[1],i[2]] for i in sqlite.execute('SELECT url,hash,error FROM uris WHERE (check_time<? AND error<?) ORDER BY RANDOM() LIMIT 25', (time.time(), 10)).fetchall() ]
if len(rows): proxyleech(sqlite,rows)
## search for new website during free time
elif search: proxyfind(sqlite)
## sleep
else: time.sleep(10)
except KeyboardInterrupt: break
print '\r',
# stop things
if watcherd: watcherd.stop()

13
search_terms.txt Normal file
View File

@@ -0,0 +1,13 @@
site:github.com :8081 :8888 :8080
site:github.com :4444 :1234 :3124
site:github.com proxylist
hourly http proxy
hourly socks proxy
daily http proxy
daily socks proxy
fresh http proxy list
fresh socks proxy list
updated http proxy list
updated socks proxy list
download http proxy
download socks proxy

131
servers.txt Normal file
View File

@@ -0,0 +1,131 @@
chat.freenode.net
irc.dal.net
irc.Undernet.Org
eu.ircnet.org
eu.undernet.org
irc.2600.net
irc.accessirc.net
irc.afterx.net
irc.asylo.com
irc.atheme.org
irc.atrum.org
irc.atw-inter.net
irc.au.dal.net
irc.austnet.org
irc.azzurra.org
irc.blitzed.org
irc.bongster.org
irc.chat4all.org
irc.chatcafe.net
irc.chatnet.org
irc.chatspike.net
irc.chattingaway.com
irc.choopa.net
irc.coldfront.net
irc.cyanide-x.net
irc.cyberarmy.net
irc.darkmyst.org
irc.data.lt
irc.deepirc.net
irc.deepspace.org
irc.drlnet.com
irc.d-t-net.de
irc.dynastynet.net
irc.ecnet.org
irc.efnet.org
irc.efnet.pl
irc.enterthegame.com
irc.esper.net
irc.eu.dal.net
irc.eu.gamesurge.net
irc.euirc.net
irc.europnet.org
irc.eversible.com
irc.fdfnet.net
irc.fef.net
irc.financialchat.com
irc.foonetic.net
irc.forestnet.org
irc.foreverchat.net
irc.freequest.net
irc.gamesurge.net
irc.geekshed.net
irc.german-freakz.net
irc.gigairc.net
irc.globalchat.org
irc.globalgamers.net
irc.greekirc.net
irc.icq.com
irc.immortal-anime.net
irc.imperium.ca
irc.inet.tele.dk
irc.irc2.hu
irc.irc4fun.net
irc.irchighway.net
irc.ircsource.net
irc.irctoo.net
irc.ircube.org
irc.ircworld.nl
irc.irdsi.net
irc.kampungchat.org
irc.kickchat.com
irc.knightirc.net
irc.krono.net
irc.landoleet.org
irc.langochat.net
irc.lichtsnel.nl
irc.maddshark.net
irc.matrix-network.org
irc.mmoirc.com
irc.mozilla.org
irc.mugglenet.com
irc.netgamers.org
irc.newnet.net
irc.nightstar.net
irc.oftc.net
irc.onlinegamesnet.net
irc.othernet.org
irc.otherworlders.org
irc.oz.org
irc.p2pchat.net
irc.phat-net.de
irc.ptnet.org
irc.rezosup.org
irc.rizon.net
irc.scarynet.org
irc.seersirc.net
irc.serenia.net
irc.serenity-irc.net
irc.servercentral.net
irc.shadowfire.org
irc.shadowworld.net
irc.simosnap.net
irc.slacked.org
irc.slashnet.org
irc.snt.utwente.nl
irc.solidirc.com
irc.sorcery.net
irc.spacetronix.net
irc.starchat.net
irc.starlink-irc.org
irc.starlink.org
irc.staynet.org
irc.st-city.net
irc.stratics.com
irc.swiftirc.net
irc.teksavvy.ca
irc.teranova.net
irc.umich.edu
irc.us.dal.net
irc.us.gamesurge.net
irc.utonet.org
irc.webchat.org
irc.whatnet.org
irc.wikkedwire.com
irc.wondernet.nu
irc.worldnet.net
irc.xevion.net
irc.xs4all.nl
irc.zerofuzion.net
uk.quakenet.org
us.quakenet.org

36
soup_parser.py Normal file
View File

@@ -0,0 +1,36 @@
from bs4 import BeautifulSoup, SoupStrainer, FeatureNotFound
import sys
#import gumbo
parser = 'lxml'
def soupify_bs4(html, nohtml=False):
global parser
parser = 'html.parser'
htm = html if nohtml else '<html><body>%s</body></html>'%(html)
try:
res = BeautifulSoup(htm, parser)
except FeatureNotFound as e:
parser = 'html.parser'
res = BeautifulSoup(htm, parser)
return res
def soupify_gumbo(html, nohtml=False):
htm = html if nohtml else '<html><body>%s</body></html>'%(html)
try:
soup = gumbo.soup_parse(htm)
if not soup.body:
print "AAAA"
print html
print "BBBB"
print repr(soup)
return soup
except Exception as e:
sys.stdout.write(html)
raise
def soupify(html, nohtml=False):
# return soupify_gumbo(html, nohtml)
return soupify_bs4(html, nohtml)

41
striphtml.py Normal file
View File

@@ -0,0 +1,41 @@
#!/usr/bin/env python
from HTMLParser import HTMLParser
import requests
import re
from selenium.webdriver.common.proxy import *
from selenium import webdriver
from selenium.webdriver.common.by import By
phantomjs_path = '/home/mickael/bin/phantomjs'
def cleanhtml(raw_html):
cleanr = re.compile('<.*?>')
cleantext = re.sub(cleanr, ':', raw_html)
cleantext = re.sub('::+',':', cleantext)
return cleantext
class MLStripper(HTMLParser):
def __init__(self):
self.reset()
self.fed = []
def handle_data(self, d):
self.fed.append(d)
def get_data(self):
return ''.join(self.fed)
def strip_tags(html):
s = MLStripper()
s.feed(html)
return s.get_data()
service_args = ['--proxy=127.0.0.1:9050', '--proxy-type=socks5']
driver = webdriver.PhantomJS(phantomjs_path,service_args=service_args)
try: driver.get('http://www.proxz.com/proxy_list_fr_1_ext.html')
except: sys.exit(0)
html = driver.page_source
driver.quit()
text = cleanhtml(html)
proxies = sorted(re.findall(r'[0-9]+(?:\.[0-9]+){3}:[0-9]+', text))
print(text)
print(proxies)

19
urignore.txt Normal file
View File

@@ -0,0 +1,19 @@
check-reverse-domain-ip-lookup
www.youtube.com
youtu.be
archive
.gov[$/]
/blog/
/questions/
/question/
wiki
answer
thread
/robots.txt
form
webproxy
check?i=
[0-9]+(?:\.[0-9]+){3}
README.md
support
aspx?p=