提取http://cn-proxy.com/提供的代理服务器,然后尝试连接一下检查是否可用。
需要使用sockets模块。
需要使用sockets模块。
刷东西什么的,最好用了。
[1].[文件] test.php ~ 2KB 下载(3) 跳至 [1]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
<?php
include
'simple_html_dom.php'
;
//ini_set('default_socket_timeout', 2);
$url
=
'http://cn-proxy.com/'
;
$html
= file_get_html(
$url
);
$ret
=
$html
->find(
'table.sortable tr'
);
//echo 'count(ip):', count($ret), PHP_EOL;
$ips
=
array
();
foreach
(
$ret
as
$key
=>
$value
)
{
$tds
=
$value
->find(
'td'
);
if
(
count
(
$tds
) < 2)
{
continue
;
}
$ip
=
$tds
[0]->innertext;
$port
=
$tds
[1]->innertext;
if
(filter_var(
$ip
, FILTER_VALIDATE_IP))
{
$ips
[] =
array
(
'ip'
=>
$ip
,
'port'
=>
$port
);
}
}
//var_dump($ips);
echo
'找到代理'
,
count
(
$ips
),
'个.'
, PHP_EOL;
$validate
=
array
();
foreach
(
$ips
as
$value
)
{
if
(checkProxy(
$value
[
'ip'
],
$value
[
'port'
]))
{
$validate
[] =
$value
;
}
}
echo
'可用代理'
,
count
(
$validate
),
'个'
, PHP_EOL;
foreach
(
$validate
as
$value
)
{
visit(
$value
[
'ip'
],
$value
[
'port'
],
'http://www.actself.me/'
);
}
echo
'done.'
,
date
(
'Y-m-d H:i:s'
) , PHP_EOL;
function
checkProxy(
$ip
,
$port
)
{
echo
'验证 '
,
$ip
,
":"
,
$port
,
' '
,
date
(
'Y-m-d H:i:s'
);
$fd
= @stream_socket_client(
'tcp://'
.
$ip
.
':'
.
$port
,
$errno
,
$errstr
, 2);
echo
$fd
!== false ?
' 可用'
:
' 不可用'
;
echo
date
(
'Y-m-d H:i:s'
), PHP_EOL;
if
(
$fd
!== false)
{
fclose(
$fd
);
return
true;
}
/*
$fd = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if($fd === false)
{
echo 'socket_create failed.', PHP_EOL;
return false;
}
$ret = socket_connect($fd, $ip, $port);
socket_close($fd);
*/
return
false;
}
function
visit(
$ip
,
$port
,
$url
)
{
$h
= curl_init(
$url
);
//curl_setopt($h, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
curl_setopt(
$h
, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
//curl_setopt($h, CURLOPT_PROXY, '127.0.0.1:1080');
curl_setopt(
$h
, CURLOPT_PROXY,
$ip
.
':'
.
$port
);
curl_setopt(
$h
, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt(
$h
, CURLOPT_TIMEOUT, 6);
curl_setopt(
$h
, CURLOPT_RETURNTRANSFER, true);
$ret
= curl_exec(
$h
);
echo
$ret
=== false ?
'curl exec failed.'
:
'curl exec successed.'
;
echo
PHP_EOL;
if
(
$ret
=== false)
{
echo
curl_error(
$h
), PHP_EOL;
}
curl_close(
$h
);
}
|