يمكن لـ jsoup جلب الصفحة عبر وكيل HTTP وتحليل الاستجابة في الاستدعاء نفسه:

Document page = Jsoup.connect("https://www.example.com/")
    .proxy("proxy.example", 8080)
    .get();

يحدد اسم المضيف والمنفذ الصحيح الوكيل. لطلبات الصفحات العامة المسموح بها، اختر نقطة نهاية HTTP من خدمتك أو من قائمة وكلاء HTTP. ويبقى عنوان URL الذي يُمرَّر إلى connect هو الصفحة التي تريدها. لا حاجة إلى تنزيل HTML في سلسلة نصية عبر URLConnection منفصل لمجرد إضافة هذا المسار.

تختار proxy(String, int) وكيل HTTP لذلك الطلب. ورقم منفذ مثل 1080 لا يغيّر بروتوكوله إلى SOCKS؛ إذ يجب أن تتحدث نقطة نهاية الوكيل بالنوع الذي يجري إعداده. ويعرض jsoup أيضًا نسخة محمّلة تقبل java.net.Proxy، لكن دعم مسار معين لا يزال يعتمد على تطبيق HTTP المستخدم.

امنح كل عامل طلبه الخاص

الخيار على مستوى الطلب يجعل العمل المتوازي أسهل من تغيير خصائص نظام JVM حول كل تنزيل. أبقِ الطلب القابل للتغيير منفصلًا لكل عامل. ويمكن لـ jsoup الحديث أن يشارك إعدادات الجلسة ومخزن ملفات تعريف الارتباط مع إنشاء طلب جديد:

Connection session = Jsoup.newSession();
Document first = session.newRequest()
    .url("https://www.example.com/one")
    .proxy("proxy-a.example", 8080)
    .get();
Document second = session.newRequest()
    .url("https://www.example.com/two")
    .proxy("proxy-b.example", 8080)
    .get();

تعمل الاستدعاءات أعلاه بالتتابع من أجل الوضوح. وإذا وُزّع العمل بشكل متزامن، فأنشئ الطلبات بشكل مستقل بدلًا من تغيير الوكيل في Connection واحد قيد التنفيذ. والجلسة المشتركة تشارك ملفات تعريف الارتباط أيضًا؛ استخدم جلسات مختلفة عندما ينبغي أن تبقى هويات التصفح منفصلة.

هذه الواجهات موجودة في jsoup 1.21.2. وتعود واجهة newRequest() بلا وسائط إلى 1.14.1، لذا ينبغي لتطبيق أقدم أن يتحقق من تبعيته قبل اعتماد مثال الجلسة.

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

مقالات ذات صلة