PHP 使用 file_get_contents 的代理方法获取远程网页的代码
代码如下:
- $url = "http://www.jb51.net/";
- $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 用法一页, 下面是它的简单实例
代码如下:
- $serverAddress = 'http://s.jb51.net';
- // 获得外域文件内容
- $randomNumber = file_get_contents($serverAddress);
- // 输出内容
- echo $randomNumber;
- ?>
来源: https://www.php1.cn/detail/php-24c2e1756b.html