PHP下通过file_get_contents的代理使用方法


Posted in PHP onFebruary 16, 2011

PHP使用file_get_contents的代理方法获取远程网页的代码。

<?php 
$url = "https://3water.com/"; 
$ctx = stream_context_create(array( 
'http' => array('timeout' => 5, 
'proxy' => 'tcp://60.175.203.243:8080', 
'request_fulluri' => True,) 
) 
); 
$result = file_get_contents($url, False, $ctx); 
echo $result; 
?>

另外一种 curl 的方式使用代理的方法:
function postPage($url) 
{ 
$response = ""; 
$rd=rand(1,4); 
$proxy='http://221.214.27.253:808'; 
if($rd==2) $proxy='http://222.77.14.56:8088'; 
if($rd==3) $proxy='http://202.98.123.126:8080'; 
if($rd==4) $proxy='http://60.14.97.38:8080'; 
if($url != "") { 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_PROXY, $proxy); 
$response = curl_exec($ch); 
if(curl_errno($ch)) $response = ""; 
curl_close($ch); 
} 
return $response; 
}

用file_get_contents解决ajax垮域问题

在ajax运用中有时候会垮域调用文件,而浏览器为了安全会默认给这种操作提出警告,甚至直接阻止。如果是IE会弹出一个警告窗口,询问你是否继续操作,只有你同意了IE才会调用垮域的文件。而其它浏览器,如火狐、Opera默认设置下则会直接提示错误,阻止调用外域文件。这会给用户不好的操作体验,如果想通过用户修改浏览器的安全设置来解决这个问题是不现实的,最好是在服务器端解决。

在服务器端可以使用一个同域的文件做为代理文件,这个代理文件将获得外域文件的内容,然后再传递给ajax。这样ajax就不是调用外域文件,而是调用同域的这个代理文件,安全问题也就解决了。

如果你的服务器端支持PHP的话,可以使用file_get_contents这个函数,看到它的名称就已经知道它有获得其它文件内容的功能了。它的详细用法可以参看PHP官方网站上的file_get_contents用法一页,下面是它的简单实例。

<?php 
$serverAddress = 'http://s.3water.com'; 
//获得外域文件内容 
$randomNumber = file_get_contents($serverAddress); 
//输出内容 
echo $randomNumber; 
?>
PHP 相关文章推荐
PHP脚本数据库功能详解(下)
Oct 09 PHP
解决GD中文乱码问题
Feb 14 PHP
mysql 中InnoDB和MyISAM的区别分析小结
Apr 15 PHP
基于PHP文件操作的详解
Jun 05 PHP
php+js实现图片的上传、裁剪、预览、提交示例
Aug 27 PHP
php绘图之加载外部图片的方法
Jan 24 PHP
PHP单例模式详细介绍
Jul 01 PHP
详细解读PHP的Yii框架中登陆功能的实现
Aug 21 PHP
PHP数据库操作Helper类完整实例
May 11 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
laravel中的一些简单实用功能
Nov 03 PHP
PDO::exec讲解
Jan 28 PHP
php文件上传表单摘自drupal的代码
Feb 15 #PHP
php 连接mysql连接被重置的解决方法
Feb 15 #PHP
php中获取关键词及所属来源搜索引擎名称的代码
Feb 15 #PHP
php批量缩放图片的代码[ini参数控制]
Feb 11 #PHP
让PHP以ROOT权限执行系统命令的方法
Feb 10 #PHP
PHP开发中常用的字符串操作函数
Feb 08 #PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
Feb 08 #PHP
You might like
骨王战斗力在公会成员中排不进前五,却当选了会长,原因竟是这样
2020/03/02 日漫
深入理解PHP原理之Session Gc的一个小概率Notice
2011/04/12 PHP
php compact 通过变量创建数组
2016/11/15 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
PHP设计模式概论【概念、分类、原则等】
2020/05/01 PHP
Jquery cookie操作代码
2010/03/14 Javascript
始终在屏幕中间显示Div的代码(css+js)
2011/03/10 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
javascript中对变量类型的判断方法
2015/08/09 Javascript
AngularJS ng-repeat数组有重复值的解决方法
2016/10/23 Javascript
常用的js方法合集
2017/03/10 Javascript
ionic 3.0+ 项目搭建运行环境的教程
2017/08/09 Javascript
详解Angular5 服务端渲染实战
2018/01/04 Javascript
vuex的简单使用教程
2018/02/02 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
vue接口请求加密实例
2020/08/11 Javascript
[01:20]PWL开团时刻DAY9——听说潮汐没用?
2020/11/10 DOTA
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
python3实现微型的web服务器
2019/09/03 Python
python不同系统中打开方法
2020/06/23 Python
实例讲解CSS3中的border-radius属性
2015/08/18 HTML / CSS
详解CSS 3 中的 calc() 方法
2018/01/12 HTML / CSS
四川internet信息高速公路(C#)笔试题
2012/02/29 面试题
环保专项行动方案
2014/05/12 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
体育运动会广播稿
2014/10/05 职场文书
机动车登记业务委托书
2014/10/08 职场文书
工人先锋号事迹材料
2014/12/24 职场文书
工程部岗位职责范本
2015/04/11 职场文书
mysql死锁和分库分表问题详解
2021/04/16 MySQL
javascript的setTimeout()使用方法总结
2021/11/20 Javascript
Python实现制作销售数据可视化看板详解
2021/11/27 Python