jsoup-ൽ HTTP പ്രോക്സി വഴി പേജ് എടുക്കൽ
jsoup-ന്റെ അഭ്യർത്ഥന-തല HTTP പ്രോക്സി API ഉപയോഗിക്കുക, ഒപ്പം പല ജോലിക്കാർ സെഷൻ ക്രമീകരണങ്ങൾ പങ്കിടുമ്പോൾ വേറിട്ട അഭ്യർത്ഥനകൾ സൃഷ്ടിക്കുക.
jsoup-ന് HTTP പ്രോക്സി വഴി പേജ് എടുക്കാനും അതേ വിളിയിൽ പ്രതികരണം വിശകലനം ചെയ്യാനും കഴിയും:
Document page = Jsoup.connect("https://www.example.com/")
.proxy("proxy.example", 8080)
.get();
ഹോസ്റ്റ്നെയിമും പൂർണ്ണസംഖ്യ പോർട്ടും പ്രോക്സിയെ തിരിച്ചറിയുന്നു. അനുവദിക്കപ്പെട്ട പൊതു പേജുകളിലേക്കുള്ള അഭ്യർത്ഥനകൾക്ക് നിങ്ങളുടെ സേവനത്തിൽനിന്നോ HTTP പ്രോക്സി പട്ടികയിൽനിന്നോ ഒരു HTTP എൻഡ്പോയിന്റ് തിരഞ്ഞെടുക്കുക. connect-ലേക്ക് നൽകുന്ന URL നിങ്ങൾ ആഗ്രഹിക്കുന്ന പേജായി തുടരുന്നു. ഈ റൂട്ട് ചേർക്കാൻ മാത്രം 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 മുതലുള്ളതാണ്, അതിനാൽ പഴയ അപ്ലിക്കേഷൻ സെഷൻ ഉദാഹരണം സ്വീകരിക്കുന്നതിന് മുൻപ് അതിന്റെ ആശ്രിതത്വം പരിശോധിക്കണം.
ക്രെഡൻഷ്യലുകൾ പ്രാമാണീകരിച്ച പ്രോക്സിക്കുള്ള അധിക ആവശ്യകതയാണ്. വിജയകരമായ റൂട്ട് തിരഞ്ഞെടുപ്പ് ഒരു അക്കൗണ്ട് നൽകുന്നില്ല, ഒപ്പം പ്രോക്സി വെല്ലുവിളി സ്വീകരിക്കുന്നത് അതിന്റെ പോർട്ടിലേക്ക് കണക്ട് ചെയ്യാനാകാത്തതിൽനിന്ന് വ്യത്യസ്തമാണ്.