gpt4 book ai didi

php - 如果使用 cURL 或 Wget 访问页面,则在 PHP 中检测

转载 作者:行者123 更新时间:2023-12-04 12:46:28 26 4
gpt4 key购买 nike

我有一个简单的 PHP 脚本,它向用户显示一些信息。如果使用 cURL 请求同一页面或使用 Wget 保存同一页面,我想尽可能地缩短此信息。

我在 Stackoverflow 上看到了几个类似的问题,但他们有一些额外的问题,比如“I want to block cURL ”或“如果...重定向表单请求”。答案通常表明不可能可靠地检测 cURL 请求,因为 cURL 允许用户更改所有请求参数并假装是浏览器。对我来说没关系,我不想阻止 cURL,我想为通用 cURL(和 Wget)请求提供额外的服务。

最佳答案

如果未配置,则 cURL 和 Wget 使用自定义 »User Agent« 字符串来处理它们的请求。

例如 curl/7.47.0Wget/1.17.1 (linux-gnu) .您可以在 https://requestb.in 上轻松测试。

多个应用程序可以访问请求 header 中的用户代理字符串。在 PHP 中,它在 $_SERVER['HTTP_USER_AGENT'] 中可用多变的。

因此,要检测 cURL 或 Wget 请求并提供不同的内容,您可以使用

<?php

// Catch cURL/Wget requests
if (isset($_SERVER['HTTP_USER_AGENT']) && preg_match('/^(curl|wget)/i', $_SERVER['HTTP_USER_AGENT'])) {
echo 'Hi curl user!';
}
else {
echo 'Hello browser user!';
}

?>

在我的应用程序中,我检测到 cURL 请求,然后让进程 die()if环形。因此,如果它只是一个浏览器,则条件不匹配并执行以下所有 PHP 代码。

如前所述,cURL 和 Wget 都允许用户设置任意用户代理。但是对于请求的服务,这个解决方案就足够了。

关于php - 如果使用 cURL 或 Wget 访问页面,则在 PHP 中检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46199502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com