دریافت صفحه از طریق پروکسی HTTP در jsoup
از API پروکسی HTTP سطح درخواست jsoup استفاده کنید و وقتی چند کارگر تنظیمات نشست را به اشتراک میگذارند درخواستهای جداگانه بسازید.
jsoup میتواند صفحه را از طریق پروکسی HTTP دریافت کند و پاسخ را در همان فراخوانی تجزیه کند:
Document page = Jsoup.connect("https://www.example.com/")
.proxy("proxy.example", 8080)
.get();
نام میزبان و پورت صحیح پروکسی را مشخص میکنند. برای درخواستهای مجاز به صفحههای عمومی، یک نقطه پایانی HTTP از سرویس خود یا از فهرست پروکسی HTTP انتخاب کنید. نشانی اینترنتی که به 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 میآید، بنابراین یک برنامه قدیمیتر باید پیش از پذیرش نمونه نشست وابستگی خود را بررسی کند.
اعتبارنامهها شرط دیگری برای پروکسی احراز هویتشده است. انتخاب موفق مسیر حساب کاربری فراهم نمیکند، و دریافت چالش پروکسی با ناتوانی در اتصال به پورت آن متفاوت است.