تخصيص وكيل المستخدم لاتصالات URL في Java
عند استخدام URLConnection في Java لاسترداد محتوى الويب، غالبًا ما يكون تعيين وكيل مستخدم مخصص ضروريًا لـ الزحف الدقيق لموقع الويب ومحاكاة المستخدم. ومع ذلك، يقوم وقت تشغيل Java الافتراضي بإلحاق المعرف الخاص به بسلسلة وكيل المستخدم، وهو ما قد لا يكون مرغوبًا فيه في سيناريوهات معينة.
الاستعلام
طلب أحد مطوري Java المساعدة في تعيين وكيل مستخدم بدون اللاحقة "Java/1.5.0_19" الملحقة بوقت التشغيل. قدم المستخدم مقتطف رمز يوضح كيفية محاولته تعيين وكيل المستخدم باستخدام setRequestProperty().
الحل
لحسن الحظ، في Java 1.6.30 والإصدارات الأحدث، تعيين وكيل المستخدم من خلال setRequestProperty("User-Agent", "") يعمل بشكل لا تشوبه شائبة، دون إضافة أي معلومات إضافية عن وقت تشغيل Java. لتوضيح ذلك، استخدم المطور netcat للاستماع لطلبات HTTP الواردة ولاحظ أنه تم إرسال وكيل المستخدم المخصص بنجاح بدون لاحقة Java.
التنفيذ الكامل]
استيراد java.io.IOException; استيراد java.net.URL؛ import java.net.URLConnection; الطبقة العامة CustomUserAgent { public static void main(String[] args) يلقي IOException { URL url = new URL("http://localhost:8080/foobar"); URLConnection hc = url.openConnection(); hc.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"); System.out.println(hc.getContentType()); }import java.io.IOException; import java.net.URL; import java.net.URLConnection; public class CustomUserAgent { public static void main(String[] args) throws IOException { URL url = new URL("http://localhost:8080/foobar"); URLConnection hc = url.openConnection(); hc.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"); System.out.println(hc.getContentType()); } }من خلال استخدام هذا الأسلوب، يمكن للمطورين تعيين وكلاء المستخدم بشكل فعال لاتصالات URL الخاصة بهم في Java دون أي إضافات غير مرغوب فيها خاصة بـ Java، مما يضمن السلوك المطلوب لتجميع الويب أو مهام الاتصال الأخرى.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3