প্রক্সি সার্ভারের মাধ্যমে কি এইচটিটিপিএস সংযোগ থাকা সম্ভব? যদি হ্যাঁ, তবে কোন ধরণের প্রক্সি সার্ভার এটির অনুমতি দেয়?
অ্যাপাচি এইচটিটিপি ক্লায়েন্ট 4 এর সাথে মোজা 5 প্রক্সি কীভাবে ব্যবহার করবেন তার নকল ?
প্রক্সি সার্ভারের মাধ্যমে কি এইচটিটিপিএস সংযোগ থাকা সম্ভব? যদি হ্যাঁ, তবে কোন ধরণের প্রক্সি সার্ভার এটির অনুমতি দেয়?
অ্যাপাচি এইচটিটিপি ক্লায়েন্ট 4 এর সাথে মোজা 5 প্রক্সি কীভাবে ব্যবহার করবেন তার নকল ?
উত্তর:
টিএলএস / এসএসএল (এইচটিটিপিএস-এর এস) গ্যারান্টি দেয় যে আপনি এবং যে সার্ভারের সাথে আপনি যোগাযোগ করছেন তার মধ্যে কোনও ইভিড্রোপার্স নেই, অর্থাৎ কোনও প্রক্সি নেই। সাধারণত, আপনি CONNECT
প্রক্সিটির মাধ্যমে টিসিপি সংযোগ খোলার জন্য ব্যবহার করেন। এই ক্ষেত্রে, প্রক্সিটি কোনও অনুরোধ / প্রতিক্রিয়াগুলিকে ক্যাশ করতে, পড়তে বা সংশোধন করতে সক্ষম হবে না এবং তাই বরং অকেজো হবে।
আপনি যদি প্রক্সিটি তথ্য পড়তে সক্ষম হন তবে আপনি নীচের পদ্ধতিটি গ্রহণ করতে পারেন:
একটি উদাহরণ স্কুইডের এসএসএল বাম্প । একইভাবে, বার্প এটির জন্য কনফিগার করা যায়। এটি মিশরীয় আইএসপি দ্বারা স্বল্প-সৌম্য প্রসঙ্গে ব্যবহৃত হয়েছে ।
নোট করুন যে আধুনিক ওয়েবসাইট এবং ব্রাউজারগুলি এইচপি কেপি বা অন্তর্নির্মিত শংসাপত্র পিনগুলি নিয়োগ করতে পারে যা এই পদ্ধতির পরাস্ত করে।
Unconditionally trusted
একটি সিএ সার্ট বোঝায়। সিএ সার্টে ডোমেন নেই। আমি দুটি উদাহরণ সহ উত্তরটি সংশোধন করেছি যেখানে এটি ব্যবহারকারীর কোনও সতর্কতা ছাড়াই বাস্তবে কাজ করে / করে।
সংক্ষিপ্ত উত্তরটি হল: এটি সম্ভব এবং একটি বিশেষ এইচটিটিপি প্রক্সি বা একটি এসওকেএসএস প্রক্সি দিয়ে করা যেতে পারে।
প্রথম এবং সর্বাগ্রে, এইচটিটিপিএস এসএসএল / টিএলএস ব্যবহার করে যা ডিজাইন অনুসারে একটি নিরাপত্তাহীন যোগাযোগের উপরে সুরক্ষিত যোগাযোগের চ্যানেল স্থাপন করে শেষ থেকে শেষ পর্যন্ত সুরক্ষা নিশ্চিত করে। যদি এইচটিটিপি প্রক্সিটি বিষয়বস্তুগুলি দেখতে সক্ষম হয় তবে এটি একটি মাঝারি মধ্যবর্তী শ্রুতিমধুর এবং এটি এসএসএল / টিএলএসের লক্ষ্যকে পরাস্ত করে। সুতরাং আমরা যদি একটি সরল এইচটিটিপি প্রক্সির মাধ্যমে প্রক্সি করতে চাই তবে অবশ্যই কিছু কৌশল অবতীর্ণ হবে।
কৌশলটি হ'ল, আমরা একটি এইচটিটিপি প্রক্সিকে একটি বিশেষ কমান্ডযুক্ত টিসিপি প্রক্সিতে পরিণত করি CONNECT
। সমস্ত এইচটিটিপি প্রক্সি এই বৈশিষ্ট্যটিকে সমর্থন করে না তবে এখন অনেকেই তা করে। টিসিপি প্রক্সিটি এইচটিটিপি বিষয়বস্তু পরিষ্কার পাঠ্যে স্থানান্তরিত করতে দেখতে পাচ্ছে না, তবে এটি প্যাকেটগুলি সামনে এবং পিছনে পাঠানোর ক্ষমতাকে প্রভাবিত করে না। এইভাবে, ক্লায়েন্ট এবং সার্ভার প্রক্সি সাহায্যে একে অপরের সাথে যোগাযোগ করতে পারে। এটি এইচটিটিপিএস ডেটা প্রক্সাইয়ের নিরাপদ উপায়।
এটি করার একটি অনিরাপদ উপায়ও রয়েছে, যার মধ্যে এইচটিটিপি প্রক্সিটি মাঝখানে হয়ে যায়। এটি ক্লায়েন্ট-সূচিত সংযোগটি গ্রহণ করে এবং তারপরে প্রকৃত সার্ভারের সাথে অন্য একটি সংযোগ শুরু করে। একটি কার্যকরভাবে এসএসএল / টিএলএসে ক্লায়েন্টকে অবহিত করা হবে যে প্রক্সিটি প্রকৃত সার্ভার নয়। সুতরাং ক্লায়েন্টকে জিনিসগুলি কাজ করার জন্য সতর্কতা উপেক্ষা করে প্রক্সিটিতে বিশ্বাস করতে হবে। এর পরে, প্রক্সিটি কেবল একটি সংযোগ থেকে ডেটা ডিক্রিপ্ট করে, পুনরায় এনক্রিপ্ট করে এবং অন্যটিতে ফিড করে।
অবশেষে, আমরা অবশ্যই একটি সোস প্রক্সির মাধ্যমে প্রক্সি HTTPS করতে পারি , কারণ SOCKS প্রক্সিটি নিম্ন স্তরে কাজ করে। আপনি SOCKS প্রক্সিটিকে TCP এবং UDP উভয় প্রক্সি হিসাবে ভাবতে পারেন।
আমি যতদূর মনে করতে পারি, আপনাকে প্রক্সিটিতে একটি HTTP সংযোগ কোয়েরি ব্যবহার করতে হবে। এটি অনুরোধ সংযোগটি একটি স্বচ্ছ টিসিপি / আইপি টানলে রূপান্তর করবে।
সুতরাং আপনি যে প্রক্সি সার্ভারটি ব্যবহার করেন এটি এই প্রোটোকলটিকে সমর্থন করে কিনা তা আপনার জানতে হবে।
যদি এটি এখনও আগ্রহের বিষয় না থাকে তবে এখানে একটি অনুরূপ প্রশ্নের উত্তর দেওয়া হয়েছে: এইচটিটিপি প্রক্সিকে ট্যুইস্টডে এইচটিটিপিএস প্রক্সি রূপান্তর করুন
প্রশ্নের দ্বিতীয় অংশের উত্তর দিতে:
যদি হ্যাঁ, তবে কোন ধরণের প্রক্সি সার্ভার এটির অনুমতি দেয়?
বাক্সের বাইরে, বেশিরভাগ প্রক্সি সার্ভারগুলি এইচটিটিপিএস সংযোগগুলি কেবল 443 পোর্টে মঞ্জুরি দেওয়ার জন্য কনফিগার করা হবে, সুতরাং কাস্টম পোর্টগুলির সাথে https ইউআরআই কাজ করবে না। প্রক্সি সার্ভারের উপর নির্ভর করে এটি সাধারণত কনফিগারযোগ্য। স্কুইড এবং টিনিপ্রক্সি উদাহরণস্বরূপ এটি সমর্থন করে।
এখানে আমার সম্পূর্ণ জাভা কোড যা এসওটিপি এবং এইচটিটিপিএস উভয় অনুরোধকে এসওকেএসএস প্রক্সি ব্যবহার করে সমর্থন করে।
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import org.apache.http.HttpHost;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.protocol.HttpContext;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.util.EntityUtils;
import javax.net.ssl.SSLContext;
/**
* How to send a HTTP or HTTPS request via SOCKS proxy.
*/
public class ClientExecuteSOCKS {
public static void main(String[] args) throws Exception {
Registry<ConnectionSocketFactory> reg = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", new MyHTTPConnectionSocketFactory())
.register("https", new MyHTTPSConnectionSocketFactory(SSLContexts.createSystemDefault
()))
.build();
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(reg);
try (CloseableHttpClient httpclient = HttpClients.custom()
.setConnectionManager(cm)
.build()) {
InetSocketAddress socksaddr = new InetSocketAddress("mysockshost", 1234);
HttpClientContext context = HttpClientContext.create();
context.setAttribute("socks.address", socksaddr);
HttpHost target = new HttpHost("www.example.com/", 80, "http");
HttpGet request = new HttpGet("/");
System.out.println("Executing request " + request + " to " + target + " via SOCKS " +
"proxy " + socksaddr);
try (CloseableHttpResponse response = httpclient.execute(target, request, context)) {
System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
System.out.println(EntityUtils.toString(response.getEntity(), StandardCharsets
.UTF_8));
}
}
}
static class MyHTTPConnectionSocketFactory extends PlainConnectionSocketFactory {
@Override
public Socket createSocket(final HttpContext context) throws IOException {
InetSocketAddress socksaddr = (InetSocketAddress) context.getAttribute("socks.address");
Proxy proxy = new Proxy(Proxy.Type.SOCKS, socksaddr);
return new Socket(proxy);
}
}
static class MyHTTPSConnectionSocketFactory extends SSLConnectionSocketFactory {
public MyHTTPSConnectionSocketFactory(final SSLContext sslContext) {
super(sslContext);
}
@Override
public Socket createSocket(final HttpContext context) throws IOException {
InetSocketAddress socksaddr = (InetSocketAddress) context.getAttribute("socks.address");
Proxy proxy = new Proxy(Proxy.Type.SOCKS, socksaddr);
return new Socket(proxy);
}
}
}
আপনি গতিশীল এসএসএল প্রজন্মের সাথে ম্যান-ইন-মধ্য-কৌশলগুলি ব্যবহার করে এটি অর্জন করতে পারেন। মিটমপ্রক্সিতে একবার দেখুন - এটি পাইথন ভিত্তিক, এসএসএল-সক্ষম এমআইটিএম প্রক্সি।
এসএসএইচ (লিনাক্স সংস্করণ) এর মাধ্যমে HTTPS টানেলিং:
1) turn off using 443 on localhost
2) start tunneling as root: ssh -N login@proxy_server -L 443:target_ip:443
3) adding 127.0.0.1 target_domain.com to /etc/hosts
লোকালহোস্টে আপনি যা কিছু করেন। তারপরে:
target_domain.com is accessible from localhost browser.
আমি চেষ্টা করেছিলাম
ssh -N -D 12345 login@proxy_server
localhost:12345
তবে আমি যখনই কোনও https ওয়েবসাইটের সাথে সংযোগ করার চেষ্টা করেছি তখন এর ফলে "অনিরাপদ সংযোগ" ত্রুটি হয়েছিল।
সমাধান ছিল
ডিজিটাল সাগর ডকুমেন্টেশন থেকে রেফারেন্স
কোনও সক্স টানেল ব্যবহার করে কোনও ভিপিএন ছাড়াই কীভাবে নিরাপদভাবে ওয়েব ট্র্যাফিক রুট করা যায়
আমি মনে করি না "প্রক্সি সার্ভারের সাথে এইচটিটিপিএস সংযোগ রয়েছে" এর অর্থ ম্যান-ইন-দ্য মিডল অ্যাটাক প্রকার প্রক্সি সার্ভার। আমি মনে করি এটি জিজ্ঞাসা করছে যে কেউ টিএলএসের মাধ্যমে কোনও HTTP প্রক্সি সার্ভারের সাথে সংযোগ করতে পারে কিনা। এবং উত্তরটি হচ্ছে হ্যা।
প্রক্সি সার্ভারের মাধ্যমে কি এইচটিটিপিএস সংযোগ থাকা সম্ভব?
হ্যাঁ, আমার প্রশ্ন এবং উত্তর এখানে দেখুন। HTTP গুলি প্রক্সি সার্ভারটি কেবল সুইচওমেগায় কাজ করে
যদি হ্যাঁ, তবে কোন ধরণের প্রক্সি সার্ভার এটির অনুমতি দেয়?
প্রক্সি সার্ভারের ধরণের সাধারণ ওয়েবসাইটগুলি কীভাবে এসএসএল শংসাপত্রগুলি মোতায়েন করে। তবে pac
ব্রাউজারের এসএসএলের মাধ্যমে প্রক্সি সংযোগটি কনফিগার করতে আপনার একটি ফাইল দরকার need