V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
eopdsm
V2EX  ›  PHP

大神帮忙看下这是什么情况, 太奇怪了

  •  
  •   eopdsm · 2018-08-30 10:18:01 +08:00 · 3371 次点击
    这是一个创建于 2278 天前的主题,其中的信息可能已经有所发展或是发生改变。

    第一次遇到一件怪事, 用 curl 写了一个获取任意网站标题的程序, 先前在本地测试,服务器测试都正常, 但是今天偶然获取一个网址时却导致网站被重置 2 分钟,期间就像服务器 IP 被墙了一样,2 分钟后网站恢复正常,测试获取其它网站又没问题 。 我又在本地测试获取要被重置的网站,也能正常获取到, 但是在服务器上却一访问就提示连接被重置(需要获取的网站能正常访问) ,如果将服务器 ip ssh 代理访问该网站, 然后访问其他网站也会出现连接被重置,不过网站能正常访问,这是为什么呢?

    24 条回复    2018-08-30 19:12:23 +08:00
    basstk
        1
    basstk  
       2018-08-30 10:28:04 +08:00
    应该是服务器问题,我的阿里云服务器,上午有时候也这样,一段时间反应特慢
    eopdsm
        2
    eopdsm  
    OP
       2018-08-30 10:43:43 +08:00
    @basstk 我又换了一台 vps 测试也遇到相同情况, 很费解
    delectate
        3
    delectate  
       2018-08-30 10:50:51 +08:00
    太频繁了吧,也许是被防火墙 ban 了,也许是你机房问题。
    chaodada
        4
    chaodada  
       2018-08-30 10:50:59 +08:00
    代码贴一下大伙研读研读
    eopdsm
        5
    eopdsm  
    OP
       2018-08-30 11:11:46 +08:00
    @chaodada
    <?php
    error_reporting(0);
    header('Content-type: application/json');

    $url=$_SERVER["QUERY_STRING"];
    $url =str_ireplace("url=","",$url);
    if($url){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HEADER, 0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_TIMEOUT, 5);
    $data = curl_exec($curl);
    curl_close($curl);


    $encode = mb_detect_encoding($data, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5'));
    $data = mb_convert_encoding($data, "utf-8", $encode);

    preg_match("/<title(.*?)>(.*?)<\/title>/i",$data,$title);

    $title = $title[2];

    }


    if($title){
    $arr = array("msg"=>"succes","title"=>$title);
    }else{
    $arr = array("msg"=>"error");

    }

    echo json_encode($arr);

    ?>
    eopdsm
        6
    eopdsm  
    OP
       2018-08-30 11:13:04 +08:00
    eopdsm
        7
    eopdsm  
    OP
       2018-08-30 11:13:51 +08:00
    @delectate 是第一次访问就要被重置, 其它网址没什么问题, 代码和有问题的网址在上面哈
    chaodada
        8
    chaodada  
       2018-08-30 11:17:56 +08:00
    @eopdsm 我在本地测试你的代码正常 ,我去我的服务器测试一次啊
    chaodada
        9
    chaodada  
       2018-08-30 11:19:30 +08:00
    @eopdsm http://demo.19year.cn/ 服务器是可以的
    eopdsm
        10
    eopdsm  
    OP
       2018-08-30 11:21:02 +08:00
    @chaodada 额 , 我换了搬瓦工两台 vps, 还有个美国的 cpanel 空间测试都出现连接被重置,  ̄□ ̄||
    chaodada
        11
    chaodada  
       2018-08-30 11:21:49 +08:00
    感情全是国外的。。。
    chaodada
        12
    chaodada  
       2018-08-30 11:22:05 +08:00
    我试试我的香港阿里云
    eopdsm
        13
    eopdsm  
    OP
       2018-08-30 11:24:06 +08:00
    @chaodada 意思是他这个网站不允许国外访问 , 能做到只要是国外 ip, 就把网站弄罢工吗[惊恐]
    chaodada
        14
    chaodada  
       2018-08-30 11:52:00 +08:00
    香港的也重置 ...
    chaodada
        15
    chaodada  
       2018-08-30 11:54:05 +08:00
    我又试了一下台湾的 win 系统 谷歌浏览器打开直接显示重置 浏览器也打不开
    eopdsm
        16
    eopdsm  
    OP
       2018-08-30 11:55:42 +08:00
    @chaodada 真是奇怪了, 他这个网站限制国外 ip 访问 , 但是怎么做到的把服务器弄罢工的哦
    chaodada
        17
    chaodada  
       2018-08-30 12:10:35 +08:00
    @eopdsm 你试试 php curl 用代理请求试试
    eopdsm
        18
    eopdsm  
    OP
       2018-08-30 12:38:12 +08:00
    @chaodada 提示:Failed to connect to 127.0.0.1 port 1080: Connection refused, 然后程序就罢工了, 什么网址都不行了
    chaodada
        19
    chaodada  
       2018-08-30 13:31:44 +08:00
    ....我测试使用 curl 代理一直没成功过、、、
    yongjing
        20
    yongjing  
       2018-08-30 13:56:15 +08:00
    这个网站,翻墙是访问不了的,限制国外 ip 访问了吧
    eopdsm
        21
    eopdsm  
    OP
       2018-08-30 14:02:52 +08:00
    @yongjing 应该是的 , 不过为什么会出现 只要访问这个网站, 导致网站 80 端口都不能访问呢?
    zarte
        22
    zarte  
       2018-08-30 14:14:19 +08:00
    @eopdsm 可以判断 ip 然后返回连接重置,貌似昨天有个帖子问怎么显示连接重置效果来着,哈哈。
    SukkaW
        23
    SukkaW  
       2018-08-30 14:17:29 +08:00
    这个网站有安全狗。你用浏览器打开 http://www.fznc.org/newslist.aspx?page=1&nc_id=8 都会触发 WAF
    eopdsm
        24
    eopdsm  
    OP
       2018-08-30 19:12:23 +08:00
    @SukkaW https://www.v2ex.com/t/484636 详细说明了下, 感觉不是安全狗的原因,他怎么有权限让我的网站瘫痪呢, 虽然现在这个解决了,方法是提交前先对网址进行 base64 编码, 但是不知道为什么不编码就要造成连接被重置 , 期待大神解答。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2787 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:43 · PVG 17:43 · LAX 01:43 · JFK 04:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.