【问题标题】:Alternatives to fsockopen - (very slow)?fsockopen 的替代品 - (非常慢)?
【发布时间】:2011-12-09 06:20:15
【问题描述】:

有人知道@fsockopen 的替代品吗?我正在尝试检测代理——用户点击站点,获取用户 IP 地址,然后使用 @fsockopen 查看他们是否使用特定端口。使用此功能是迄今为止最可靠的检测,除了禁止特定 IP/ IP 模式。但是,对于访问我的网站的用户来说,它非常缓慢且无法接受。有没有其他选择,或者有什么方法可以让它更快?并且没有将函数的超时设置为 1 秒也无济于事:P。

示例代码:

 if ( $sock = @fsockopen($ _server['REMOTE_ADDR'], 80, $errno, $errst, 1) ) { echo "proxy!"; } 

curl 能做到这样吗?

提前致谢!

【问题讨论】:

  • 请添加说明您想要实现的目标并向我们展示一些代码。检测代理是什么意思,为什么设置超时与它有关?
  • 我的意思是检测访问者是否在代理下查看网站。 IE:接受 _server['REMOTE_ADDR'] 并根据它确定它是否是代理。对于第二个部分,大多数人认为 fsockopen 中的参数 - "timeout"(例如:fsockopen("www.example.com", 80, $errno, $errstr, 30) -- 30 秒是这里的超时时间),效果我所指的“缓慢”。它没有。
  • 您如何确定是否有人通过代理查看网站?您是否尝试通过端口 80 连接到他们的 IP?
  • 基本上是的: if ( $sock = @fsockopen($ _server['REMOTE_ADDR'], 80, $errno, 1) ) { echo "proxy!"; }

标签: php javascript proxy vpn fsockopen


【解决方案1】:

测试$_SERVER['HTTP_X_FORWARDED_FOR']

$is_proxy = isset($_SERVER['HTTP_X_FORWARDED_FOR']);

它比您当前的方法更快、更准确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多