有没有办法在带有file_get_contents()的URL中传递变量,并让file_get_contents()检索基于传递的变量值的动态内容?
例如,假设我在网站A 的页面上有以下代码:
$contents=file_get_contents('http://example.com/get.php?a='.$number);
echo $contents;
在网站A上生成$number
(值可以是1,2,3等)
然后在 example.com 上托管get.php
。是否可以根据传递的变量值从get.php
检索不同的内容?例如,如果a=1
,则会提取get.php
的某个部分,但是如果a=2
和get.php
的不同部分将被提取,等等。这可能吗?< / p>
答案 0 :(得分:1)
仅取决于get.php
。如果它在a
的不同值上返回不同的内容,那么肯定会有效。
答案 1 :(得分:1)
如果你找出变量的模式,就有可能。
如果您注意到该模式是一个数字,您可以尝试这样的事情:
您不希望在代码或输出中显示任何不相关的内容,并且您不希望即时进行过滤,因为它只会增加延迟。在目标计算机上的get.php
中:
if(!empty($_GET['a']) and is_numeric($_GET['a'])){
$id = $_GET['a'];
$sql = "select contents from database where id='$id'";
$results = mysqli_query($sql);
$row_cnt = mysqli_num_rows($result);
if ($row_cnt == 1){
while ($row = mysqli_fetch_array($results)){
echo $row['contents'];
}
} elseif (empty($row_cnt) {
echo "No results";
} else {
echo "Too many records.";
}
} else {
die;
}
在进行采矿的机器中(机器2):
$contents = '';
for($x=0;$x<150;$x++){
$contents.=file_get_contents('http://example.com/get.php?a='.$number);
}
echo $contents;
请记住在网上打开您需要的网址时:
cURL更适合此并包含许多高级功能。
以上示例仅适用于一页或两页,而不是用于查看网站上的内容以重新显示内容。我误解了,并认为你是一个网站的数据(一次性)。
<强> LAN 强> 在本地网络上,显示来自另一台服务器上的内容的局域网应该非常快,即使您正在挖掘内容,网站也应该相当快(按现代标准)。
您需要将目标站点的域和ip添加到hosts文件中,这样每次调用该函数时系统都不会执行DNS查找(如果禁用了缓存)。
同一个框 如果他们在同一台机器上,如果没有某种暂停,你可能会使系统超载。
<强> WAN 强> 如果您在两个服务器场中的两个独立网络之间相隔一段距离,则跳数将极大地影响脚本的性能。就任何时间长度运行实时生产服务器而言,这不是一个好主意。大多数人不会等待几秒钟来加载页面。
此外,您还需要从挖掘服务器的统计信息中筛选挖掘服务器的IP,因为它看起来像目标计算机上的所有流量都来自一个位置。
由于它们位于两个不同的盒子上,因此您需要确保IP表(防火墙)之类的内容不会锁定目标服务器上的所有访问权限,因为您可能会从同一IP中反复连接到站点。如果您无法控制两个网络,那么各种各样的事情也会阻止重复访问,例如防火墙和路由器。许多网络主机不喜欢重复的大量流量。如果您不小心错误配置任何一个盒子,也可能会因带宽而受到惩罚。
数据库复制 如果要从数据库中提取内容,可能需要查看数据库复制并在每台计算机上保留数据库的两个副本。然后,您只需像加载任何其他文件一样加载内容。
答案 2 :(得分:0)
希望我能正确理解你。你的剧本:
http://wwww.domain1.com/get.php
其他一些资源:
http://www.resource.com/other.php
你的get.php,看起来像这样:
$findResource = $_GET['a'];
// You should perform some validation here on the $findResource value to prevent security issues
$contents=file_get_contents('http://www.resource.com/other.php?a='.$findResource);
答案 3 :(得分:0)
是的,这是可能的,但您必须关注隐私政策(许多网站都不允许抓取)。