প্রাণবন্ত জীবনযাপন: গুগল ডেটা এপিআই ক্লায়েন্ট লাইব্রেরির সাথে প্রক্সি সার্ভার ব্যবহার করা

জেফ ফিশার, Google Data APIs টিম
জুন 2007

ভূমিকা: কেন প্রক্সি?

একটি প্রক্সি সার্ভার হল একটি কম্পিউটার (অথবা একটি কম্পিউটারে পরিষেবা) যেটি তাদের পক্ষ থেকে বেশ কয়েকটি ক্লায়েন্ট কম্পিউটারের জন্য অনুরোধ করে, সাধারণত বাহ্যিক সংস্থানগুলিতে। এই নিবন্ধটি HTTP প্রক্সি সার্ভারগুলির সাথে সম্পর্কিত কারণ HTTP হল প্রোটোকল যা Google-এর ওয়েব পরিষেবাগুলির জন্য সর্বজনীন APIগুলি অ্যাক্সেস করতে ব্যবহৃত হয়৷ এক্সটেনশনের মাধ্যমে, ব্যক্তিগত ব্যবহারকারীর ডেটা বা পাসওয়ার্ডের মতো সংবেদনশীল তথ্য ধারণকারী HTTP অনুরোধ করার সময় HTTPS বা SSL প্রক্সিগুলিও আগ্রহের বিষয়। অনেক বড় কোম্পানি আজকে HTTP প্রক্সি ব্যবহার করে ইন্টারনেটে কোন ওয়েবসাইট বা তথ্য কর্মীরা দেখতে পারে তা নিয়ন্ত্রণ করতে। পাবলিক লাইব্রেরি এবং স্কুলগুলিও এই উদ্দেশ্যে প্রক্সি প্রয়োগ করার জন্য পরিচিত। এছাড়াও অনেকগুলি সর্বজনীনভাবে উপলব্ধ প্রক্সি সার্ভার রয়েছে যা বেনামে ওয়েব সামগ্রী অ্যাক্সেস করতে ব্যবহার করা যেতে পারে।

একটি প্রক্সি সার্ভার ব্যবহার করার সময় সম্ভাব্য সমস্যাগুলি কী সফ্টওয়্যার ব্যবহার করা হচ্ছে এবং এটি কীভাবে কনফিগার করা হয়েছে তার উপর নির্ভর করে৷ একটি প্রক্সিকে "স্বচ্ছ" বলে মনে করা হয় যদি এটি ক্লায়েন্টের অনুরোধ বা সার্ভারের প্রতিক্রিয়া প্রক্সি সনাক্তকরণ এবং প্রমাণীকরণের জন্য প্রয়োজনীয় ব্যতীত অন্য কোনো উপায়ে পরিবর্তন না করে। যাইহোক, বিপুল সংখ্যক প্রক্সি সার্ভার অনুরোধ বা প্রতিক্রিয়া এমনভাবে পরিবর্তন করে যা একজন বিকাশকারীকে সচেতন হওয়া উচিত। বিশেষ করে, নির্দিষ্ট কিছু প্রক্সি প্রতিক্রিয়ার বিষয়বস্তু-প্রকার পরিবর্তন করবে বা HTTP কিপ-অ্যালাইভ হেডারগুলিকে রিসোর্স হোস্ট করা বাইরের সার্ভারে পাঠানো থেকে সরিয়ে দেবে।

তাহলে কেন একজন বিকাশকারী একটি HTTP বা SSL প্রক্সি ব্যবহার করতে চান? সাধারণত, এর জন্য দুটি কারণ রয়েছে: এটি কিছু কর্পোরেট অবকাঠামোর জন্য প্রয়োজন, অথবা, বিকাশকারী একটি অ্যাপ্লিকেশন ডিবাগ করতে চান যা একটি ওয়েব পরিষেবা ব্যবহার করে৷ প্রথম কারণটি সম্পূর্ণরূপে অনিবার্য যদি ডেভেলপার যে নেটওয়ার্কে কাজ করছে তার নিয়ম বহিরাগত ওয়েবসাইটের সাথে নন-প্রক্সিড ওয়েব বা SSL সংযোগ নিষিদ্ধ করে। পরবর্তী কারণটি আমাদের সহায়তা ফোরামে ঘন ঘন রিপোর্ট করা হয় ডেভেলপাররা Google ওয়েব পরিষেবা নিয়ে কাজ করার সময় সমস্যা সমাধানের চেষ্টা করে। ফিডলার এবং চার্লসের মতো বিশেষ-উদ্দেশ্য "ডিবাগিং" প্রক্সি রয়েছে যা এই সঠিক পরিস্থিতির দিকে প্রস্তুত। একটি প্রক্সি সার্ভারের এই ব্যবহার সম্পর্কে আরও তথ্যের জন্য, আপনি আমাদের নিবন্ধটি পড়তে চাইতে পারেন অন দ্য ওয়্যার: API বিকাশকারীদের জন্য সরঞ্জাম

কিছু অ্যাপ্লিকেশনের জন্য, প্রক্সি সার্ভার সমর্থন যোগ করা কঠিন হতে পারে। সৌভাগ্যবশত, Google Data API-এর জন্য বেশিরভাগ ক্লায়েন্ট লাইব্রেরি কিছু সামান্য কোড পরিবর্তনের পরে একটি HTTP প্রক্সি সার্ভারের সাথে কাজ করার জন্য তৈরি করা যেতে পারে। এই নিবন্ধটি একটি বিকাশকারীর জন্য একটি সূচনা পয়েন্ট হিসাবে পরিবেশন করার উদ্দেশ্যে করা হয়েছে যারা তাদের অ্যাপ্লিকেশন দ্বারা করা ওয়েব অনুরোধগুলির জন্য একটি প্রক্সি সার্ভার ব্যবহার করতে চান৷

জাভা

জাভা ক্লায়েন্ট লাইব্রেরির সাথে একটি HTTP প্রক্সি ব্যবহার করা সহজ ধন্যবাদ সংযোগ সেটিংস পরিচালনা করতে সূর্যের সিস্টেম বৈশিষ্ট্য ব্যবহার করার জন্য।

উদাহরণস্বরূপ, যদি আপনার কর্পোরেট প্রক্সি সার্ভারটি 3128 পোর্টে "my.proxy.domain.com" এ চলমান থাকে, তাহলে আপনি Google ক্যালেন্ডার, Google স্প্রেডশীট ইত্যাদির জন্য একটি পরিষেবা বস্তু তৈরি করার আগে আপনার কোডে নিম্নলিখিতগুলি যোগ করতে পারেন৷

System.setProperty("http.proxyHost", "my.proxy.domain.com");
System.setProperty("http.proxyPort", "3128");

বিকল্পভাবে, আপনার সার্লেট পরিবেশ শুরু করার সময় এটি কমান্ড লাইনে করা যেতে পারে:

java -Dhttp.proxyHost=my.proxy.domain.com -Dhttp.proxyPort=3128

JSSE প্যাকেজের আরও সাম্প্রতিক সংস্করণের সাথে, এটি SSL প্রক্সিতেও প্রসারিত করা যেতে পারে। যদি পূর্ববর্তী উদাহরণে একই প্রক্সি সার্ভারটি 3129 পোর্টে একটি SSL প্রক্সি চালায়, প্রয়োজনীয় কোডটি হবে:

System.setProperty("https.proxyHost", "my.proxy.domain.com");
System.setProperty("https.proxyPort", "3129");

এটি কমান্ড লাইন থেকেও HTTP প্রক্সির মতো একই ফ্যাশনে করা যেতে পারে।

কখনও কখনও, এটি ব্যবহার করার জন্য আপনাকে একটি প্রক্সি সার্ভারে শংসাপত্র সরবরাহ করতে হতে পারে৷ সাধারণত, তারা একটি HTTP হেডারে অন্তর্ভুক্ত একটি base64 হ্যাশ ব্যবহার করে জমা দেওয়া হয়, নিম্নরূপ:

String encoded = new String(Base64.encodeBase64(new String("username:password").getBytes()));
String base64encodedCredentials = "Basic " + encoded;
myService.getRequestFactory().setPrivateHeader("Proxy-Authorization", base64encodedCredentials);

উল্লেখ্য যে উপরের কোডটি প্রয়োজনীয় base64 এনকোডিং করার জন্য Apache Commons Codec প্যাকেজ ব্যবহার করে। উপরের কোডটি চালানোর জন্য আপনাকে org.apache.commons.codec.binary.Base64 ক্লাস ইম্পোর্ট করতে হবে।

.নেট

.NET ক্লায়েন্ট লাইব্রেরির সাথে একটি HTTP প্রক্সি ব্যবহার করা জাভা ক্লায়েন্টের মতো তুচ্ছ নয়, তবে একটি নির্দিষ্ট পণ্যের জন্য পরিষেবা বস্তু তৈরি করার সময় এটি একইভাবে সম্পন্ন করা যেতে পারে।

উদাহরণস্বরূপ, আমরা Google ক্যালেন্ডার পরিষেবার সাথে ইন্টারঅ্যাক্ট করতে একটি প্রক্সি ব্যবহার করতে চাই:

using System.Net;

CalendarService service = new CalendarService("CalendarSampleApp");
query.Uri = new Uri(calendarURI);
GDataRequestFactory requestFactory = (GDataRequestFactory) service.RequestFactory;
IWebProxy iProxy = WebRequest.DefaultWebProxy;
WebProxy myProxy = new WebProxy(iProxy.GetProxy(query.Uri));
// potentially, setup credentials on the proxy here
myProxy.Credentials = CredentialCache.DefaultCredentials;
myProxy.UseDefaultCredentials = true;
requestFactory.Proxy = myProxy;

এটি আপনার ইন্টারনেট সংযোগ সেটিংস থেকে প্রয়োজনীয় প্রক্সি সনাক্ত করা উচিত -- .NET লাইব্রেরির একটি চমৎকার বৈশিষ্ট্য৷ যাইহোক, যদি আপনি সঠিকভাবে প্রক্সি আবিষ্কার করতে এটিকে বিশ্বাস না করেন, তাহলে আপনি কোড পরিবর্তন করে এটি সেট করতে পারেন:

using System.Net;

CalendarService service = new CalendarService("CalendarSampleApp");
GDataRequestFactory requestFactory = (GDataRequestFactory) service.RequestFactory;
WebProxy myProxy = new WebProxy("http://my.proxy.example.com:3128/",true);
// potentially, setup credentials on the proxy here
myProxy.Credentials = CredentialCache.DefaultCredentials;
myProxy.UseDefaultCredentials = true;
requestFactory.Proxy = myProxy;

উপসংহার

এই নিবন্ধটি আলোচনা করেছে যে কীভাবে কিছু Google ডেটা API ক্লায়েন্ট লাইব্রেরি একটি HTTP প্রক্সি সার্ভারের সাথে কাজ করে। নেটওয়ার্ক নীতি দ্বারা বাধ্যতামূলক একটি প্রক্সি সার্ভারের পিছনে কাজ করা বিকাশকারীরা এখনও এই লাইব্রেরিগুলি ব্যবহার করতে পারে৷ ডেভেলপাররা প্রক্সি সার্ভারকে তাদের কোড ডিবাগ করতে সাহায্য করার জন্য একটি প্রক্সি সার্ভার নিয়োগ করতে পারে যার মাধ্যমে প্রক্সি সার্ভারটি HTTP অনুরোধের বিষয়বস্তু রেকর্ড করে এবং প্রতিক্রিয়াগুলি Google ওয়েব পরিষেবাতে এবং পাঠানো হয়। একটি প্রক্সি সার্ভার এবং অন্যান্য ক্লায়েন্ট লাইব্রেরির আরও উন্নত ব্যবহারের ক্ষেত্রে এই টিউটোরিয়ালটি কভার করা হয়নি। অতিরিক্ত সাহায্যের প্রয়োজন এমন ডেভেলপারদের নিচে লিঙ্ক করা আমাদের পাবলিক সাপোর্ট গ্রুপে অংশগ্রহণ করতে উৎসাহিত করা হচ্ছে।

এই নিবন্ধে ব্যবহৃত ক্লায়েন্ট লাইব্রেরি সম্পর্কে অতিরিক্ত তথ্যের জন্য, নিম্নলিখিত পৃষ্ঠাগুলিতে যান:

অন্যান্য উৎস: