bcpxqz 发表于 2010-6-5 01:36:14

php重启路由

本帖最后由 bcpxqz 于 2010-6-5 18:42 编辑

采集某某点评网站的时候,如果访问过快,防spam机制会锁定你的ip,这时候只好重启路由了,gg一下,发现了相关代码,稍修改了下,希望对大家采集有所帮助。//操作路由
function router($target='')
{

      $server= '192.168.0.1';            // IP address
      $host    = '192.168.0.1';            // Domain name
      $port    = 80;
      $referer = 'http://'.$host.$target;    // Referer

    $username = "admin";#路由的用户名
    $password = "admin";#路由的管理密码
    $authorization = base64_encode($username.":".$password);
    $File = fsockopen($server, $port, $errno, $errstr, 50);
      if ($File)
      {
            $out = "GET $target HTTP/1.1\r\n";
            $out .= "Host: $host\r\n";
            $out .= "Referer: $referer\r\n";
            $out .= "Authorization: Basic $authorization\r\n";
            $out .= "Connection: Close\r\n\r\n";

            fputs($File, $out);

            $makeFile = $buffer = "";
            while ($buffer = fread($File,4096))
            {
                      $makeFile = $makeFile.$buffer;
            }
            fclose($File);
            return $makeFile;

      }
}
//断开
function disconnectr() {
    $url = '/if.cgi?redirect=sys_status.htm&failure=fail.htm&type=wan_state_reset&ifname=ppp0&ifstatus=Up&ifcmd=DISCONNECT';
    //这个地址你可以通过firebug获得
    router($url);
}
//连接
function connectr() {
    $url = '/if.cgi?redirect=sys_status.htm&failure=fail.htm&type=wan_state_reset&ifname=ppp0&ifstatus=Down&ifcmd=CONNECT';
    //这个地址你可以通过firebug获得
    router($url);
}
//状态
function connects() {
    $url="/sys_status.htm";
    $str = router($url);
    return $str;
}
//是否连接成功
function checkconnetr($step,$time) {
    $find = 'cableDSL="3"-1';
    $str = connects();
    if(strpos($str,$find)){
       $url = "?step=".$step;
       echo '路由器重启ok';
       echo "<script>setTimeout(\"document.location='$url'\",$time)</script>";
       return true;
    }else{
      //重检测
      if(isset($_GET['page'])){
            $page = intval($_GET['page']);
      }else{
            $page=1;
      }
      if($page==6){
            echo '路由器操作超时';
      }else{
            $url = "?step=5&page=".($page+1)."&"."tostep=$step";
            echo "<script>setTimeout(\"document.location='$url'\",9000)</script>";
      }
    }

}

function reset_R($page,$step,$time=2000) {
    echo '正在重启路由器';
    if(isset($_GET['page'])){
         $page = intval($_GET['page']);
      }else{
         $page=1;
   }
   if($page==1){
         disconnectr();
         connectr();
         return checkconnetr($step,$page);
   }else{
      return checkconnetr($step,$page);
   }
}

qquxi 发表于 2010-6-5 12:19:30

这思路很有意思哈。^_^{:2_141:}

aven 发表于 2010-6-5 17:08:45

麻烦,直接用个动态proxy调度

qianglong 发表于 2010-6-5 18:17:30

哦 ?什么 个思路啊

bcpxqz 发表于 2010-6-5 18:41:15

回复 3# aven
谢谢,这个思路不错,省去了断开连接和循环检测的时间。俺比较菜,不知道在火车头里能实现不?

zjyk1984 发表于 2010-6-5 19:19:33

{:4_180:}使用动态IP代理

bcpxqz 发表于 2010-6-5 22:08:43

回复 6# zjyk1984
谢谢!

月白 发表于 2010-6-6 11:06:34

呵呵。。思路不错。。

andywu 发表于 2010-6-6 14:05:58

牛B,这也行!!!!!!!!

bcpxqz 发表于 2010-12-8 14:47:23

我尝试了代理,不过还是这种方便,代理的链接有点慢(可能是我找的代理太垃圾)
页: [1]
查看完整版本: php重启路由