احفظ ملفات تعريف الارتباط للحصول على صفحات الويب البعيدة

StackOverflow https://stackoverflow.com/questions/247006

  •  05-07-2019
  •  | 
  •  

سؤال

لقد حصلت على تطبيق PHP يحتاج إلى الحصول على المحتويات من صفحة ويب أخرى ، وصفحة الويب التي أقرأها تحتاج إلى ملف تعريف ارتباط.

لقد وجدت معلومات حول كيفية إجراء هذه المكالمة بمجرد الحصول على ملف تعريف الارتباط ( http://groups.google.com/group/comp.lang.php/msg/4f618114ab15ae2a ) ومع ذلك ، ليس لدي أي فكرة عن كيفية إنشاء ملف تعريف الارتباط ، أو كيف / أين يتم حفظ ملف تعريف الارتباط.

على سبيل المثال ، لقراءة صفحة الويب هذه عبر wget أفعل ما يلي:

wget --quiet --save-cookies cookie.file --output-document=who.cares \ 
  http://remoteServer/login.php?user=xxx&pass=yyy

wget --quiet --load-cookies cookie.file --output-document=documentiwant.html \
  http://remoteServer/pageicareabout.html

... سؤالي هو كيف أفعل "-save-cookies" في PHP حتى أتمكن من استخدام ملف تعريف الارتباط في متابعة PHP Stream_Context_create / file_get_contents block:

$opts = array(http'=> array(
  'method'=> "GET",
  'header'=>
    "Accept-language: en\r\n" .
    "Cookie: **NoClueAtAll**\r\n"
  )
);

$context = stream_context_create($opts);
$documentiwant = file_get_contents("http://remoteServer/pageicareabout.html",
  0, $context);
هل كانت مفيدة؟

المحلول

ربما تكون أفضل حالًا في استخدام لفة. يستخدم curl_setopt لإعداد خيارات معالجة ملفات تعريف الارتباط.

إذا كان هذا مجرد شيء لمرة واحدة ، فيمكنك استخدام Firefox مع حية رؤوس HTTP للحصول على الرأس ، ثم لصقه في رمز PHP الخاص بك.

نصائح أخرى

شزم - هذا مشغول ! thx سووو كثيرا! في حالة تعثر شخص آخر على هذه الصفحة ، إليك ما هو مطلوب بالتفصيل:

  1. قم بتثبيت Curl (بالنسبة لي ، إنه بسيط مثل "sudo apt-get install php5-curl 'في Ubuntu)
  2. قم بتغيير PHP المدرجة السابقة إلى ما يلي:

    <?php
    
    $cr = curl_init('http://remoteServer/login.php?user=xxx&pass=yyy');
    curl_setopt($cr, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($cr, CURLOPT_COOKIEJAR, 'cookie.txt');   
    $whoCares = curl_exec($cr); 
    curl_close($cr); 
    
    $cr = curl_init('http://remoteServer/pageicareabout.html');
    curl_setopt($cr, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($cr, CURLOPT_COOKIEFILE, 'cookie.txt'); 
    $documentiwant = curl_exec($cr);
    curl_close($cr);
    
    ?>
    

مقتطف الرمز أعلاه يتأثر بشدة http://www.weberdev.com/get_example-4555.html.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top