मैं PHP को कुछ वेबसाइट पर http अनुरोध भेजने के लिए कर्ल का उपयोग कर रहा हूं और CURLOPT_FOLLOWLOCATION को 1 पर सेट कर दिया है ताकि यह रीडायरेक्ट का पालन कर सके। फिर, क्या मैं यह पता लगा सकता हूं कि इसे अंततः पुनर्निर्देशित किया गया था?यह पता लगाना कि कर्ल को रीडायरेक्ट किया गया था
5
A
उत्तर
6
आप की तरह कुछ कर सकते हैं।
-1
आप अंतिम शरीर की जरूरत नहीं है, तो आप इसे इस तरह से कर सकते हैं:
सेट CURLOPT_HEADER
और CURLOPT_NOBODY
। शीर्षलेख "स्थान" वापस किया जाना चाहिए और इसमें नया यूआरएल होगा। फिर यदि आवश्यक हो तो नए यूआरएल के साथ अनुरोध करें।
curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); // returns the last effective URL
2
$ch = curl_init("http://websitethatredirects.com");
$curlParams = array(
CURLOPT_FOLLOWLOCATION => true,
);
curl_setopt_array($ch, $curlParams);
$ret = curl_exec($ch);
$info = curl_getinfo($ch);
print $info['url'];
यह आपको यूआरएल है कि आप अंततः पर पुनः निर्देशित कर रहे थे दिखाएगा:
0
कोड के इस स्निपेट का परीक्षण करें। यह मेरे लिए ठीक काम करता है:
$urls = array(
'http://www.apple.com/imac',
'http://www.google.com/'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
foreach($urls as $url) {
curl_setopt($ch, CURLOPT_URL, $url);
$out = curl_exec($ch);
// line endings is the wonkiest piece of this whole thing
$out = str_replace("\r", "", $out);
// only look at the headers
$headers_end = strpos($out, "\n\n");
if($headers_end !== false) {
$out = substr($out, 0, $headers_end);
}
$headers = explode("\n", $out);
foreach($headers as $header) {
if(substr($header, 0, 10) == "Location: ") {
$target = substr($header, 10);
echo "[$url] redirects to [$target]<br>";
continue 2;
}
}
echo "[$url] does not redirect<br>";
}
संबंधित मुद्दे
- 1. यह पता लगाना कि कोई HttpModule लोड किया गया है
- 2. यह पता लगाना कि IPython
- 3. पता लगाना कि ओरेकल डेटाबेस स्थापित किया गया है
- 4. यह पता लगाना कि सी #
- 5. यह पता लगाना कि वीआईएम
- 6. यह पता लगाना कि कस्टम UIButton दबाया गया है
- 7. पता लगाना कि कचरा कलेक्टर का आह्वान किया गया था (.Net)
- 8. यह पता लगाना कि स्टैक पूर्ण है
- 9. यह पता लगाना कि समान दो तार
- 10. सी ++ यह पता लगाना कि ग्राफिक्स कार्ड
- 11. पता लगाना कि
- 12. यह पता लगाने के लिए कि कौन से फ़ंक्शंस को रेखांकित नहीं किया गया था
- 13. यह पता लगाना कि कोई मान MATLAB
- 14. यह पता लगाना कि कोई बिंदु त्रिभुज
- 15. यह पता लगाना कि क्या सिस्टम perl
- 16. यह पता लगाना कि कोई संख्या 2
- 17. पता लगाना कि
- 18. जांचें कि आउटपुट रीडायरेक्ट किया गया है
- 19. यह पता लगाना कि स्रोत किस प्रकार गिट
- 20. यह पता लगाना कि std :: ve_of_range std :: vector.at()
- 21. यह पता लगाना कि कोई स्ट्रिंग एक निश्चित पैटर्न
- 22. jQuery $ .ajax में रीडायरेक्ट का पता लगाना?
- 23. जावा: पता लगाना * क्यों * एक वर्ग लोड किया गया है
- 24. आईओएस - यह पता लगाना कि गेम सेंटर अक्षम है
- 25. क्या मुझे यह पता चल सकता है कि फ़ाइल में क्या .NET डीएल बनाया गया था?
- 26. पता लगाना कि टीसीपी पर एक संदेश
- 27. पता लगाना कि जब कोई एएसपी.NET अनुप्रयोग
- 28. पता लगाना कि क्रोम एक्सटेंशन
- 29. आईफोन: यह पता लगाना कि क्या UIAlert/UIActionSheet खुला है
- 30. यह पता लगाना कि फ़ाइल इनपुट संवाद खुला है
अच्छा। इस बारे में नहीं पता था। कर्ल विकल्पों की संख्या को ध्यान में रखते हुए, उन्हें ढूंढना हमेशा आसान नहीं होता है। धन्यवाद। –