Download the PHP package akrez/http-proxy without Composer
On this page you can find all versions of the php package akrez/http-proxy. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Please rate this library. Is it a good library?
Informations about the package http-proxy
# راهاندازی فیلترشکن با هاست اشتراکی PHP
چرا از هاست اشتراکی PHP استفاده کنیم؟
- **قیمت مناسب:**
هاستهای اشتراکی معمولاً هزینهی بسیار کمتری نسبت به سرورهای اختصاصی دارند و این موضوع برای بسیاری از
کاربران جذاب است.
- **IPهای تمیز:**
هاستها معمولاً از IPهای تمیز و معتبر استفاده میکنند که میتواند در عملکرد بهتر فیلترشکن مؤثر باشد.
- **پهنای باند نامحدود:**
بسیاری از سرویسدهندگان هاستینگ پهنای باند نامحدود ارائه میدهند که این ویژگی برای فیلترشکن بسیار مناسب است،
زیرا بدون نگرانی از محدودیت پهنای باند میتوانید از اینترنت استفاده کنید.
- **راهاندازی راحتتر:**
مدیریت هاست اشتراکی و راهاندازی یک اسکریپت ساده PHP بسیار آسانتر از مدیریت سرور اختصاصی یا مجازی است.
چه مشکلاتی وجود دارد؟
- **محدودیت پروتکلها:**
هاستهای اشتراکی ممکن است فقط از پروتکلهای محدودی پشتیبانی کنند که این موضوع میتواند عملکرد فیلترشکن را
تحت تأثیر قرار دهد.
- **مناسب نبودن برای موبایل:**
این روش هنوز برای گوشیهای همراه بهینهسازی نشده است و نیاز به توسعه بیشتری دارد.
- **پیچیدگی برای کاربران عادی:**
استفاده از این نوع فیلترشکن ممکن است برای کاربران عادی کمی گیجکننده باشد و نیاز به راهنمایی بیشتری داشته
باشد.
چطور کار میکند؟
به طور کلی این روش مشابه عملکرد یک **HTTP Proxy** است، اما به دلیل محدودیتها، تفاوتهایی در نحوه اجرا وجود دارد:
1. درخواست اصلی دستکاری میشود تا بتوان آن را به هاست پراکسی ارسال کرد.
2. پس از رسیدن درخواست دستکاریشده به هاست پراکسی، درخواست اصلی بازیابی شده، پردازش میشود و پاسخ به کاربر
بازگردانده میشود.
بیایید با یک مثال بررسی کنیم
فرض کنید میخواهیم درخواست زیر را به آدرس `www.blocked.com/sensored/content.json` ارسال کنیم:
### محدودیتها
- **محدودیت در متد:**
شاید متد اصلی (مانند `OPTIONS`) روی هاست پشتیبانی نشود؛ پس باید قبل از ارسال، متد را به `POST` تغییر دهیم
و در هاست، دوباره آن را بازیابی کنیم.
- **هدر Host:**
هدر `Host` درخواست اصلی با میزبان پراکسی متفاوت است و باید جایگزین شود.
### پس چه راهحلی داریم؟
آدرس درخواست را طوری تغییر میدهیم که به هاست پراکسی برسد. مثلاً:
تبدیل میشود به:
پس در این حالت، درخواست زیر به جای درخواست اصلی (در این مثال یعنی درخواست بالا) ارسال میشود:
### توضیح بخشهای URL
| بخش | توضیح |
| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `https://www.proxy-host.com/inline.php` | مسیر اسکریپت روی هاست اشتراکی. میتواند به عنوان توکن برای هر کاربر نیز عمل کند. یعنی اسکریپت میتواند روی فایل `unpredictable_personal_token.php` به جای `inline.php` هاست شود |
| `https_OPTIONS` | بخش کانفیگ: پروتکل و متد. با `_` جدا میشوند و اختیاریاند. میتوانید `debug` هم اضافه کنید (`https_OPTIONS_debug`). |
| `www.blocked.com/sensored/content.json` | آدرس اصلی درخواست همراه با تمام پارامترها. |
### چرا فکر میکنی این راه بهتره؟
وقتی تغییرات را فقط توی آدرس اضافه کنیم با کمترین تغییرات میتونیم فیلتر یا تحریم را دور بزنیم.
مثلا یک کتابخونه را در نظر بگیرید که با آدرس `https://api.telegram.org` در تعامل هست و این آدرس را در متغیر `$baseUrl` ذخیره کرده.
حالا فقط کافیه به نحوی `$baseUrl` را به `https://www.proxy-host.com/inline.php/https/api.telegram.org` تغییر بدید. بدون اینکه نیازی باشه هدرها را دستکاری کنید. همین!
آیا باید دستی URLها را تغییر دهیم؟
خیر. برای این کار از **MitmProxy** استفاده میکنیم تا درخواستها به صورت خودکار دستکاری شوند. فایلهای مورد نیاز
در مسیر `client/addons.py` قرار دارند.
### مراحل نصب و راهاندازی
ریپوزیتوری را کلون کنید تا فایلها را در اختیار داشته باشید.
یکی از نسخههای پرتابل MitmProxy را از دانلود کرده و فایل `mitmdump.exe` را به پوشه `client` منتقل کنید.
یک بار فایل mitmdump.exe را اجرا کنید تا فایلهای گواهی امنیتی لازم ایجاد شوند.
برای نصب گواهی، دستور زیر را در Command Prompt (خط فرمان ویندوز) اجرا کنید:
برای مرورگر فایرفاکس، بر اساس راهنمای رسمی MitmProxy، مراحل اضافی را انجام دهید.
فایل addons.py را باز کنید و متغیر config را با تنظیمات مورد نیاز پر کنید.
در نهایت، با پارامترهای زیر MitmProxy را اجرا کنید:
در تنظیمات سیستم ویندوز، پراکسی را روی `127.0.0.1` و پورت را برابر `local_server_port` (اینجا 8080) قرار دهید.
برای هاست باید چه کاری انجام دهیم؟
دستور `composer require akrez/http-proxy` را اجرا کنید تا پوشه `vendor` ساخته بشه حالا یک فایل به اسم مثلا `inline.php` ایجاد کنید و کد زیر را در اون کپی کنید. پوشه `vendor` و `inline.php` را روی هاست آپلود کنید.
- ممکنه آدرس `./vendor/autoload.php` برای شما متفاوت باشه که بستگی به محل آپلودش داره
- فایل `inline.php` میتونه هر اسم دیگهای داشته باشه همونطور که در بالا اشاره کردم
- اگر مقدار `$request` برابر `null` بود یعنی اسکریپت به درستی صدا زده نشده یعنی مثلا آدرس `https://proxy-php-host.com/inline.php` به تنهایی صدا زده شده.
چرا نوشتم؟
- **خستگیمون در بره :**
ما اینجا داریم زحمت میکشیم 😃 این کار حاصل 4 سال تلاش در زمان فراغت و حدود 7000 خط کد هست که با انواع کتابخانه ها مثل walkor/workerman و reactphp/reactphp و ... پیاده سازی شد اما جواب نداد تا بالاخره بهترین راه رو پیدا کردم.
- **بهترش کنیم :**
هنوز راه درستی برای دسترسی موبایل پیدا نکردم. همچنین به نظرم پیاده سازی برای کاربر معمولی سخته و البته کلی باگ دیگه هست.
- **ایده بگیرید و بهترش رو بسازید :**
این راه به ذهن من رسید اما امیدوارم شما بعد از خوندن کدها و ایده کلی از این پروژه راههای بهتری رو درست کنید (مثلا با استفاده از Http Tunnel).
- **و استفاده کنیم :**
مهمترین قسمت اینه، لذت اتصال به اینترنت آزاد با بیشترین استتار 🎉
لطفا به فکر بقیه هم باشید، فقط خودمون مهم نیستیم.
All versions of http-proxy with dependencies
PHP Build Version
Package Version
The package akrez/http-proxy contains the following files
Loading the files please wait ...