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酷壳的这篇文章。
  • 相关阅读:
    Fluent UDF【1】:简介
    CFD使用者应当了解的一些事情
    关于CAE的那点儿破事儿【二】
    sau交流学习社区--看小说的lovebook一个无线端BS应用
    sau交流学习社区--songEagle开发系列:Vue.js + Koa.js项目中使用JWT认证
    mysql数据库NO CONNECTION问题分析以及解决方案
    sau交流学习社区第三方登陆github--oauth来实现用户登录
    微信小程序初体验,入门练手项目--通讯录,部署上线(二)
    快速新建简单的koa2后端服务
    docker初体验,搭建自用的gitlab服务
  • 原文地址:https://www.cnblogs.com/youxin/p/3242984.html
Copyright © 2011-2022 走看看