我做了一个很简单的用户脚本:
当我浏览网页时,我可以在一次点击中“书签”任何图像
我的用户脚本
一切都很完美,但在某些情况下,脚本无法复制文件
实际上,该文件已创建,但不包含img数据,它仅包含错误网页的内容:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /data/x/xxx_xxx_x.jpg on this server.</p>
<p>Additionally, a 403 Forbidden
error was encountered while trying to use an ErrorDocument to handle the request.</p>
<hr>
<address>Apache Server at xxxxxxxx.net Port 80</address>
</body></html>
“复制”代码(php):
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $urlimg);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
set_time_limit(300); # 5 minutes for PHP
curl_setopt($ch, CURLOPT_TIMEOUT, 300); # and also for CURL
$path = $dirpix.'/'.$aa.'/'.$mm;
if ( ! is_dir($path)) {
mkdir($path);
}
$outfile = fopen($path.'/'.$id.'.'.$ext, 'wb');
curl_setopt($ch, CURLOPT_FILE, $outfile);
curl_exec($ch);
fclose($outfile);
curl_close($ch);
也许网站阻止了这种“复制”脚本?谢谢
要获得正确的工作,请添加
$agent= 'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11';
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
试试下面的代码它在我的服务器工作正常。
<?php
$img[]='http://i.indiafm.com/stills/celebrities/sada/thumb1.jpg';
$img[]='http://i.indiafm.com/stills/celebrities/sada/thumb5.jpg';
$path="images/";
foreach($img as $i){
save_image($i, $path);
if(getimagesize($path.basename($i))){
echo '<h3 style="color: green;">Image ' . basename($i) . ' Downloaded OK</h3>';
}else{
echo '<h3 style="color: red;">Image ' . basename($i) . ' Download Failed</h3>';
}
}
//Alternative Image Saving Using cURL seeing as allow_url_fopen is disabled - bummer
function save_image($img,$fullpath='basename'){
if($fullpath!='basename'){
$fullpath = $fullpath.basename($img);
}
$ch = curl_init ($img);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$rawdata=curl_exec($ch);
curl_close ($ch);
if(file_exists($fullpath)){
unlink($fullpath);
}
$fp = fopen($fullpath,'x');
fwrite($fp, $rawdata);
fclose($fp);
}
我能想到的两件事是,
>
将用户代理设置为curl请求。因为从您所说的,您可以查看图像,但是curl得到了403错误,很可能是服务器端的userAgent过滤。
添加裁判到您的卷曲请求。您可以将用户脚本中的推荐人信息发送到php脚本。您必须发布或获取window.location.href
的值。
嗯,我在linux系统上安装时遇到问题。我遵循了digital ocean的所有指示。之后,我在浏览器中验证它,然后它显示这种。我在安装过程中遗漏了什么吗?我的php版本是7,我使用的是ubuntu 14.04。
当我试图使用执行PHP脚本时,它不起作用。 在错误日志文件中显示: PHP警告:shell_exec()[function.shell exec]:无法执行'PHP/home/snabsam/public_html/。。。。。 系统 Centos shell_exec与clamscan配合使用 与clamav的功能配合使用 但它没有执行PHP脚本 我检查过的东西: PHP是off 不存在于在php
我有一个终端卷曲命令可以正常工作 curl-H“内容类型:application/json”--cert cert.p12:myPassword-X POST-d'myJsonData'https://api-applecareconnect-ept.apple.com/enroll-service/1.0/bulk-enroll-devices 我已将命令转换为如下所示: 但我收到错误“访问被拒
我正在尝试将php与firebase结合使用 安装软件包“composer require kreait/firebase php^4.0”后 调整我的火力基地 它向我显示了错误: 致命错误:未捕获错误http\Exception\ConnectException:cURL错误35:OpenSSL SSL\u connect:SSL\u error\u连接到ff64t的系统调用。firebasei
我已经在我的系统中安装了python、pip和selenium,我正在基本站点上测试一个示例代码。 代码: 如何解决此问题?
问题内容: 我想知道是否有可能告诉bash 分别对stdout / stderr的所有调用或随后的后续调用? 一种快速而又肮脏的解决方案是编写自己的printf实现,并使用它代替内置的任何实现,但是在我看来,我可能不需要这样做。 我正在编写同时运行的多个构建脚本,出于调试的需要,我 确实 需要查看它们按顺序编写的消息。 问题答案: 如果命令使用stdio并连接到终端,则会按行刷新它们。否则,您需要