公司用的是通达OA系统 业余时间写了个自动考勤的 用PHP模拟登陆 打考勤 加在系统的定时任务 生成随机范围内时间打考勤 一切都是很完美 可是今天老总叫我看邮件 问我怎么我打考勤的IP都不是公司网络的IP呢?纳闷  我说是远程打的考勤 说刚来公司不太清楚 哎 。。现在就想知道PHP怎么模拟IP  POST数据呢  。。服务器记录了客户端IP的  

解决方案 »

  1.   

    我看了通达OA 写入数据库的是$_SERVER['REMOTE_ADDR']  这个环境变量记录的是和服务端握手的IP 没法伪造啊
      

  2.   


    就是因为早上有时候怕晚了 才把程序放VPS上跑  公司电脑哪能天天开着呢?
      

  3.   

    用php的curl可以通过修改http的header请求模拟IP
    例子:
    client.php
    <?php
    $headers['CLIENT-IP'] = '202.103.229.40';
    $headers['X-FORWARDED-FOR'] = '220.103.229.40'; 
    $headers['REMOTE_ADDR'] = '220.103.229.40'
    $headerArr = array();
    foreach( $headers as $n => $v ) {
        $headerArr[] = $n .':' . $v;
    }
     
    ob_start();
    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, "<a href="http://localhost/curl/server.php&quot" rel="nofollow">http://localhost/curl/server.php&quot</a>;);
    curl_setopt ($ch, CURLOPT_HTTPHEADER , $headerArr );  //构造IP
    curl_setopt ($ch, CURLOPT_REFERER, "<a href="http://www.163.com/" rel="nofollow">http://www.163.com/</a> ");   //构造来路
    curl_setopt( $ch, CURLOPT_HEADER, 1);
     
    curl_exec($ch);
    curl_close ($ch);
    $out = ob_get_contents();
    ob_clean();
     
    echo $out;
    ?>
    server.php<?php
    function GetIP(){
        if(!empty($_SERVER["HTTP_CLIENT_IP"]))
            $cip = $_SERVER["HTTP_CLIENT_IP"];
        else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
            $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
        else if(!empty($_SERVER["REMOTE_ADDR"]))
            $cip = $_SERVER["REMOTE_ADDR"];
        else
        $cip = "无法获取!";
        return $cip;
    }
    echo "<BR>访问IP: ".GetIP()."<br>";
    echo "<BR>访问来路: ".$_SERVER["HTTP_REFERER"];
    ?>
     
      

  4.   


    function curl_string ($url,$user_agent,$proxy){
     
    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_PROXY, $proxy);
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent);
    curl_setopt ($ch, CURLOPT_COOKIEJAR, "c:\cookie.txt");
    curl_setopt ($ch, CURLOPT_HEADER, 1);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt ($ch, CURLOPT_TIMEOUT, 120);
    $result = curl_exec ($ch);
    curl_close($ch);
    return $result;
     
    }
     
    $url_page = "http://www.baidu.com";
    $user_agent = "Mozilla/4.0";
    $proxy = "http://150.65.32.66:3128";
    $string = curl_string($url_page,$user_agent,$proxy);
    echo $string;
      

  5.   

    请问这个模拟IP的代理IP必须是可用的吗?还是只是虚拟出来的?
      

  6.   

    windows好像有个计划任务,你每天电脑定时开机,开机就执行考勤呗、、我看你发帖都笑抽了,老总问肿么是外网ip呢,,哈哈哈哈
      

  7.   

    你太搞了。有位说用curl代理,应该也不行,具体的方法是定时开机,然后你可以设一个远程登录,控制你办公室机器打卡,然后远程关了。。用苹果机的貌似经常这样搞。。PC没试过
      

  8.   


    curl只能伪造header, REMOTE_ADDR是实际和服务端握手通信的IP  可以通过代理 修改 但是公司电脑也不可能一直开着啊 。。所以此题暂时无解 呵呵