Smart proxymaker xD
Занимался брутом, программу для получения свежих прокси не нашел. Извращался вручную, вырезая с сайтов списки и приводил к виду xxx.xxx.xxx.xxx:yyyy вручную. Решил упростить задачу и написал небольшую программу на С++ под консоль, которая выдирает из введенного текста все прокси и аккуратненько выводит в списочек, по 1 штуке в ряд. Код кривоват, ну короче смотрите сами =) Если массам понравится моя задумка, добавлю больше возможностей. Тестировалась преимущественно на http://www.samair.ru/proxy/
P.S тестил под linux консолью bash.
P.P.S Запускаете программу, ctrl+v список в нее и потом три раза Enter
P.P.P.S Пишите в комментах абсолютно все что думаете по этому поводу
PHP код:
#include <iostream>
using namespace std;
bool num(char arr[], int frst);
bool ip(char arr[], int first);
bool next(char arr[], int first);
char first_clean(char in[], char out[]);
main()
{
char ch='s';
int Break=0;
char *in = new char[30000];
char *out = new char[2000];
int arr = 0;
for (arr=0; ch!='\0',Break<3; arr++,Break--)
{
if (Break<-2)
Break = 0;
if (ch=='\n')
Break=Break+3;
cin.get(ch);
in[arr] = ch;
}
in[arr+1] = '\0';
cout << "--------------------" << endl;
first_clean(in,out);
cout << endl;
for (int k=0 ;out[k]!='\0' ;k++)
cout<< out[k];
return 0;
}
bool num(char arr[], int num)
{
int f;
f = arr[num];
if (( f>=48 ) and (f <=59 ))
return true;
else return false;
}
bool ip(char arr[], int first)
{
if ((num(arr,first+1) == false) or (num(arr,first-1) == false))
return false;
for (int x = 4; x<=11;x++)
{
if (arr[first+x]=='\n')
return false;
if (arr[first+x]=='.')
return true;
}
return false;
}
bool next(char arr[], int first)
{
if ((num(arr,first)) or (arr[first] == '.'))
return true;
else return false;
}
char first_clean(char in[], char out[])
{
int x=0,m=0;
for (int z = 0; in[z]!='\0';z++)
{
if ((ip(in,z) == true) and ((num(in,z+1)==true) and (num(in,z-1)==true)))
{
if (num(in,z-3) == true)
{
for (int y = z-3; next(in,y); y++,z++,m++)
{
cout << in[y];
if (next(in,y) == true)
out[m] = in[y];
}
cout << endl;
out[++m] = '\n';m++;
}
if (num(in,z-2)==true)
{
for (int y = z-2; next(in,y);y++,z++,m++)
{
cout << in[y];
if (next(in,y) == true)
out[m] = in[y];
}
cout << endl;
out[++m] = '\n';m++;
}
if (num(in,z-1)==true)
{
for (int y = z-1; next(in,y);y++,z++,m++)
{
cout << in[y];
if (next(in,y) == true)
out[m] = in[y];
}
cout << endl;
out[++m] = '\n';m++;
}
}
out[++m] = '\0';
}
return out[0];
}
|