zoukankan      html  css  js  c++  java
  • PHP用CURL或fsockopen伪造IP和来路(referer)

    URL是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 CURL库。

    我们可以用CURL来伪造IP和来路,例子:1.php 请求 2.php 。

    CURLOPT_HTTPHEADER

    一个用来设置HTTP头字段的数组。使用如下的形式的数组进行设置: array('Content-type: text/plain', 'Content-length: 100')

    如;

    curl_setopt($chCURLOPT_HTTPHEADERS,array('Content-Type: application/json'));

    或者array是其他的形式。CURLOPT_HTTPHEADER还可以来配置设置host访问。

    1.php

    <?Php
    $ch=curl_init();
    curl_setopt($ch,CURLOPT_URL,'http://localhost/php/webCrawl/receiveCurlSet.php');
    curl_setopt($ch,CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:8.8.8.8', 'CLIENT-IP:8.8.8.8'));  //构造IP
    curl_setopt($ch,CURLOPT_REFERER,'http://www.baidu.com');
    curl_setopt($ch,CURLOPT_HEADER,0);
    $out=curl_exec($ch);
    print $out;
    curl_close($ch);
    ?>
    receiveCurlSet.php
    <?Php
    function getClientIp() {
         
        if (!empty($_SERVER["HTTP_CLIENT_IP"]))
            $ip = $_SERVER["HTTP_CLIENT_IP"];
        else if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
            $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
        else if (!empty($_SERVER["REMOTE_ADDR"]))
            $ip = $_SERVER["REMOTE_ADDR"];
        else
            $ip = "err";
         
            
        return $ip;
    }
    echo "IP: " . getClientIp() . "";
    echo "referer: " . $_SERVER['HTTP_REFERER'];
    ?>

    输出:

    IP: 8.8.8.8referer: http://www.baidu.com1

    不知道后面为什么多了一个1.

    还有,我们接收 的php文件,是用的getClientIp函数,如果用

    $_SERVER["REMOTE_ADDR"]

    是不能显示我们设置8.8.8.8的。因为REMOTe_ADDR是查看客户端物理IP地址的,这个我们无法模拟

    还可以用fsockopen来设置,参考http://yige.org/p/463。


    注意:
    如果是header的话,是没有referer的。
    即:
    在a页面:

    <?php
     
    header("Location:http://localhost/php/webCrawl/301Redirect2.php");
    ?>

    301Redirect2.php 页面

     echo $_SERVER['HTTP_REFERER'];

    会报错:

    Undefined index: HTTP_REFERER。

     原因是什么,不知道。

    我们通过搜索引擎搜索结果,点击页面,该页面是新开的页面,但是有referer属性。如百度的:

    Referer:
    http://www.baidu.com/s?wd=+%E9%85%B7%E5%A3%B3&rsv_bp=0&ch=&tn=baidu&bar=&rsv_spt=3&ie=utf-
    我们可以通过这个方法检测到底是由哪个搜索引擎进入该页面的。可以看http://coolshell.cn/articles/9308.html酷壳的这篇文章。
  • 相关阅读:
    经典回溯问题--八皇后dfs递归回溯求解【DFS】
    CSP认证考试(第九次)第一题
    C++字符串和数字格式转化(使用sprintf()和sscanf()函数)
    2016蓝桥杯C++A组第六题 寒假作业【暴力搜索】
    先序非递归建立二叉树
    sqlsrv数据库复杂语句1
    tp5域名配置
    JavaScript使用 value 属性
    数据库随机查询6条数据
    文件目录问题
  • 原文地址:https://www.cnblogs.com/youxin/p/3242984.html
Copyright © 2011-2022 走看看