تعيين وكيل المستخدم لـ Java URLConnection
عند محاولة تحليل صفحة ويب باستخدام Java مع URLConnection وتعيين وكيل المستخدم إلى محدد القيمة، قد يتم إلحاق "Java/1.5.0_19" إضافية بالنهاية. ينشأ هذا بسبب وجود قيود في الإصدارات الأقدم من Java.
الحل (Java 1.6.30 والأحدث)
في Java 1.6.30 والأحدث، ظهرت هذه المشكلة تم حلها. تعيين وكيل المستخدم باستخدام setRequestProperty("User-Agent", "Mozilla ...") يعمل الآن بشكل صحيح دون إلحاق إصدار Java.
التحقق
للتحقق هذا، يمكنك الاستماع على منفذ باستخدام netcat، الذي يعرض رؤوس HTTP الأولية للطلبات الواردة. بدون تعيين وكيل المستخدم، ستظهر الرؤوس:
GET /foobar HTTP/1.1 User-Agent: Java/1.6.0_30 Host: localhost:8080 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive
عند تعيين وكيل المستخدم، ستظهر الرؤوس بدلاً من ذلك:
GET /foobar HTTP/1.1 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 Host: localhost:8080 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive
مثال للتعليمات البرمجية (Java 1.6.30 )
يوضح مثال التعليمات البرمجية التالي كيفية تعيين وكيل المستخدم بشكل صحيح:
import java.io.IOException; import java.net.URL; import java.net.URLConnection; public class TestUrlOpener { 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()); } }
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3