سؤال

لدي بعض التعليمات البرمجية (بالمناسبة، خاصة بـ Omniture SiteCatalyst) التي تعرض 1x1 بكسل بناءً على بعض متغيرات كائنات JavaScript التي قمت بتعيينها في الكود المصدري للصفحة.يقوم جافا سكريبت في النهاية بإنشاء صورة img استنادًا إلى كود البرمجة النصية، لكن img src لا يتم ترميزه بشكل ثابت في HTML.كيف يمكنني معرفة ما هو img src، بالنظر إلى عنوان URL للصفحة؟إذا قمت فقط بالتقاط الصفحة، فسوف أحصل على جافا سكريبت المعروض مسبقًا.

يحرر

على سبيل المثال، لنفترض أن لدي هذا الرمز لـ StackOverflow.html:

<html>
<script type="text/javascript">
a = 2
document.write(a)
</script>
</html>

كيف يمكنني جلب StackOverflow.html والحصول بطريقة ما على القيمة "2" بدلاً من كل كود البرمجة النصية الخاص بي؟

شكرًا!

هل كانت مفيدة؟

المحلول 4

أعتقد أن أفضل طريقة للقيام بذلك هي باستخدام السيلينيوم، ثم إدخال بعض جافا سكريبت في الصفحة إما لاستخراج DOM، أو استرداد القيمة من النافذة العامة إذا كان ذلك مناسبًا.

نصائح أخرى

إذا كنت تحاول الحصول على قيمة a بعد تشغيل البرنامج النصي من جانب العميل (أيفي المتصفح)، يجب أن تكون قادرًا على استرداده بالطريقة العادية.

خذ الإعداد التالي:

Index.html

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

<!doctype html>
<html>
<head><title>My Page</title></head>
<body>
  <p>My Content<p>
  <!-- Start tracking code -->
  <script src="tracking.js"></script>
  <!-- End tracking code -->
  <script src="mycode.js"></script>
</body>
</html>

تتبع.js

هذا هو رمز التتبع، الذي من المفترض أن توفره شركة التتبع.

var id = '1234foobar';
var visitorUserAgent = encodeURIComponent(navigator.userAgent);
document.write(
  '<img src="http://tracking.com/1x1.gif?id='
  + id + '&ua=' + visitorUserAgent + '" />'
);

mycode.js

إذا كنت تعرف المتغيرات التي تنشئها شفرة التتبع (إن وجدت)، فمن المفترض أن تتمكن من استرداد المتغيرات نفسها أو على الأقل src سمة من img العلامة التي تنشئها شفرة التتبع.

var imgs = document.getElementsByTagName('img');
alert([id, visitorUserAgent, imgs[imgs.length - 1].src].join('\n'));

يحرر:

للإجابة على سؤالك المكرر:

يبدو لي أن مشكلتك تكمن في معرفة الشكل الذي ستبدو عليه الصفحة بعد تشغيل JS عليها.

لا توجد طريقة بسيطة للقيام بذلك ستمنحك نتائج دقيقة بنسبة 100%، لذلك ستحتاج إلى تشغيل جافا سكريبت فعليًا ومعرفة النتائج، وهو أمر ليس بالسهل حقًا عندما لا تكون في المتصفح.

الآن لديك عدة خيارات.لم تذكر الأداة التي تستخدمها لالتقاط الصفحة، ولن أفترض أنك تستخدم مكشطة مخصصة.إذا كنت ترغب في الاستمرار في استخدام Scarper، يمكنك:

  • النظر في استخدام وحيد القرن لتقييم JS.لست متأكدًا مما سيعطيك هذا، يمكنك البحث في هذا.
  • إذا كان document.write هو الاستدعاء الوحيد الذي يهمك، فيمكنك تحليل المتغيرات التي يستخدمها، ثم محاولة تقييم قيمها.وهذا سوف يتطلب كتابة محلل، ربما يكون صعبا.
  • أفضل شيء يمكنك القيام به هو استخدام أداة اختبار وظيفية مثل التيلوريوم أو السيلينيوم.سيتيح لك هذا الوصول إلى الصفحة التي تم تشغيل JS فيها بالفعل، ويمكنك استخدام إجابتي الأصلية للحصول على القيمة التي تحتاجها.

سأستخدم لوحة Net في Firebug وأقوم بالتصفية حسب طلبات الصور.ستراه يخرج لحظة إنشائه.وأيضًا إذا كنت تقدم طلبات تحليلية، فحاول تثبيت Omnibug البرنامج المساعد Firebug لتتبع الطلبات وتقسيمها.

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