Php Can';我好像找不到网页';用户代理和HTTP头都设置了吗?
由于某些原因,我似乎无法通过cURL获取此特定网页的内容。我已经成功地使用了cURL来很好地访问“顶级页面”内容,但是相同的自建快速cURL函数似乎不适用于其中一个链接的子web页面 顶级页面:Php Can';我好像找不到网页';用户代理和HTTP头都设置了吗?,php,http,curl,Php,Http,Curl,由于某些原因,我似乎无法通过cURL获取此特定网页的内容。我已经成功地使用了cURL来很好地访问“顶级页面”内容,但是相同的自建快速cURL函数似乎不适用于其中一个链接的子web页面 顶级页面:http://www.deindeal.ch/ 子页面:http://www.deindeal.ch/deals/hotel-cristal-in-nuernberg-30/ mycurl函数(在functions.php中) PHP文件以获取内容(使用echo进行测试) 到目前为止,我已经尝试了以下方法
http://www.deindeal.ch/
子页面:http://www.deindeal.ch/deals/hotel-cristal-in-nuernberg-30/
mycurl函数(在functions.php中)
PHP文件以获取内容(使用echo进行测试)
到目前为止,我已经尝试了以下方法来实现这一点
- 在本地(XAMPP)和远程(LAMP)运行文件
- 在此处推荐的用户代理和HTTP头中添加-在函数
之前,包含所有当前选项,除了CURLOPT\u USERAGENTcurl\u get()
和
CURLOPT\u HTTPHEADERS`
CURLOPT_FOLLOWLOCATION => TRUE
根据你的选择
如果从命令行运行一个简单的curl请求(包括查看响应头的-i
),那么很容易看到:
$ curl -i 'http://www.deindeal.ch/deals/hotel-cristal-in-nuernberg-30/'
HTTP/1.1 302 FOUND
Date: Fri, 30 Dec 2011 02:42:54 GMT
Server: Apache/2.2.16 (Debian)
Vary: Accept-Language,Cookie,Accept-Encoding
Content-Language: de
Set-Cookie: csrftoken=d127d2de73fb3bd72e8986daeca86711; Domain=www.deindeal.ch; Max-Age=31449600; Path=/
Set-Cookie: generic_cookie=1; Path=/
Set-Cookie: sessionid=987b1a11224ecd0e009175470cf7317b; expires=Fri, 27-Jan-2012 02:42:54 GMT; Max-Age=2419200; Path=/
Location: http://www.deindeal.ch/welcome/?deal_slug=hotel-cristal-in-nuernberg-30
Content-Length: 0
Connection: close
Content-Type: text/html; charset=utf-8
如您所见,它返回一个302和一个Location头。如果你直接点击那个位置,你就会得到你想要的内容
回答你的两个问题:
啊,我明白你在说什么了。因此,当您第一次转到该链接时,您将被重定向并设置一个或多个cookie。一旦你有了这些cookie,你的请求就会按预期的那样通过 因此,您需要使用cookiejar,如本例所示:
因此,您需要发出初始请求,保存cookies,然后发出后续请求,包括cookies。感谢您提供的信息,并根据响应标题添加
CURLOPT\u FOLLOWLOCATION
确实有效(重定向到http://www.deindeal.ch/welcome/?..
),但是,现在很明显,响应头显示的位置与您尝试在浏览器中访问url时显示的位置不同。如果我在浏览器中访问url,我发现自己没有被重定向——url被完美地请求,但是当发出cURL请求时,会提供一个不同的位置——你知道为什么会这样吗?
CURLOPT_FOLLOWLOCATION => TRUE
$ curl -i 'http://www.deindeal.ch/deals/hotel-cristal-in-nuernberg-30/'
HTTP/1.1 302 FOUND
Date: Fri, 30 Dec 2011 02:42:54 GMT
Server: Apache/2.2.16 (Debian)
Vary: Accept-Language,Cookie,Accept-Encoding
Content-Language: de
Set-Cookie: csrftoken=d127d2de73fb3bd72e8986daeca86711; Domain=www.deindeal.ch; Max-Age=31449600; Path=/
Set-Cookie: generic_cookie=1; Path=/
Set-Cookie: sessionid=987b1a11224ecd0e009175470cf7317b; expires=Fri, 27-Jan-2012 02:42:54 GMT; Max-Age=2419200; Path=/
Location: http://www.deindeal.ch/welcome/?deal_slug=hotel-cristal-in-nuernberg-30
Content-Length: 0
Connection: close
Content-Type: text/html; charset=utf-8