"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تعيين وكيل المستخدم بشكل صحيح في Java URLConnection؟

كيفية تعيين وكيل المستخدم بشكل صحيح في Java URLConnection؟

تم النشر بتاريخ 2024-11-16
تصفح:542

How to Correctly Set the User-Agent in Java URLConnection?

تعيين وكيل المستخدم لـ 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