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酷壳的这篇文章。
  • 相关阅读:
    day02-数据库操作
    day01-MySQL介绍
    3-socketserver
    1-多线程与多进程
    keyword模块
    math模块
    查看进程pid与ppid
    开启进程的两种方式
    进程理论
    进程
  • 原文地址:https://www.cnblogs.com/youxin/p/3242984.html
Copyright © 2011-2022 走看看