跨域修改iframe中的内容

有时候会需在自己的网站上显示其他网站的部分内容,虽说php+js可以抓到,但最简洁的方法便是iframe引用了。不过现在的站长学聪明了,大多用js检测是否有人引用自己的页面,一旦检测到立马直接跳转到自己的网站去,这样一来,不仅抓取不成,反而跳到他的网站。。。不过搞代码的,不都是见招拆招吗,你禁止我引用,我就另出奇招。Google上借用了下国外朋友的妙招,成功破解防iframe引用, ;-)。

现在来说说成功引用后的事,引用是成功了,可是有点东西看着碍眼,可是这是别人的页面,想改也改不得啊~这时候就想到了用JS搞定它,跨域替换iframe中的内容,当然也用到了些php,废话不多说,直接贴代码:

先是加载iframe了:

1
<iframe frameborder="0" scrolling="no" src="replace.php?http://www.baidu.com/" width="500" height="250"></iframe>

然后是JS:

1
2
3
<script type="text/javascript">  
document.getElementsByTagName("iframe")[0].src="replace.php?"+document.getElementsByTagName("iframe")[0].src;
</script>

再上php,replace.php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php  
$site=$_SERVER[‘QUERY_STRING’];
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $site);
$content = curl_exec ($ch);
curl_close ($ch);
$content=str_replace("ludis(要替换的内容)","www.ldsun.com",$content);
//将iframe对方页面的ludis替换为www.ldsun.com
echo $content;
exit;

?>

【注】:str_replace也可以批量替换内容:

1
2
3
4
5
6
$replacements = array(  
"原词1" => "替换词1",
‘原词2’ => ‘替换词2’,
‘原词3’ => ‘替换词3
);
$content=str_replace(array_keys($replacements), $replacements, $content);
Author

Ludis

Posted on

2014-05-20

Updated on

2014-05-20

Licensed under

Comments