سلام. دوستان میخواستم اسکریپتی بنویسم که از طریق پایتون بیام توییت ارسال کنم . همه چی فکر میکنم تنظیمه. ولی متاسفانه با اینترنت ایران نمیتونم توییت کنم و به پروکسی گیر میده. قبلا هم میخواستم برای تلگرام ربات درست کنم ولی بازم مشکل فیلترینگ دارم .
میشه یک راهنمایی کنید که چه طوری پروکسی تنظیم کنم روی کدها که درخواست از طریق اون ارسال بشه. یا حداقل نمونه کدی نشون بدید و یا چیزی که دقیق نشون بده . مرسی
سلام. فکر میکنم کتابخونه requests خودش میاد از environment variable سیستمتون دنبال دو متغیر http_proxy و https_proxy میگرده و اگر وجود داشته باشن ریکویست ها رو از طریق پروکسی میزنه. یعنی شما اگر بتونید این دو متغیر رو درست ست کنید فیلترینگ رو رد میکنید.
دقت کنید که هر یوزر برای خودش environment variable داره. پس ببینید شما با چه یوزری دارید کد رو اجرا میکنید و در محیط اون یوزرتون environment variable رو ست کنید.
اول توی کدتون از طریق زیر پروکسی رو ست کنید (پروکسی مربوط به تور یا هر چیز دیگه ای که دارید) اگر کار کرد بیاید آزمایش و خطا کنید چطور میتونید برای هر یوزر environment variable ست کنید.
من ویندوز کار نکردم اطلاعاتم ناقصه ولی مثلا وقتی command prompt رو run as administrator بالا میارید دارید متغیرهای محیطی رو برای یوزر ادمین (روت) ست میکنید. با زدن دستور set (به تنهایی) میتونید لیست متغیرهایی که ست شده رو ببینید.
با توجه به اینکه یکبار تلاش کردید از تور استفاده کنید ببینید این سورس به کارتون میاد https://www.sylvaindurand.org/use-tor-with-python/88
در مورد اینکه چی باید بجای my proxy و proxy ست کنید اینطوری نگاه کنید که باید به پکیج ریکویست پایتون بگید که از کجا میتونه به پروکسی وصل بشه. پروکسی هم توضیح سادش اینطوریه که ریکویست شما رو میگیره میفرسته به سرور خودش و از سرور خودش به اونجا که شما میخواید ریکویست میزنه و هر چی جواب بود برمیگردونه میده به شما. مثل اون بچگی ما هست که داییمون بهمون نامه میداد بدیم به دختر همسایه و جواب نامه رو از دختره بگیریم برگردونیم بهش خودش مستقیم ریکویست نمیزد و ما رو واسطه میکرد که ردیابی نشه.
حالا شما تور بروزر رو باز میکنی و ای پی و پورتی که تور بروزر روی اون گوش میکنه رو میدی به پایتون تون، پایتون به تور به کمک این ای پی و پورت درخواست میده، تور به سرورهای خودش درخواست میده و…
اگر تور بروزر رو در سیستم خودتون بدون دست زدن به تنظیماتش ران کنید روی localhost:9050 میتونید بهش ریکویست بزنید.دقت کنید باید تور باز باشه تا روی این پورت گوش بده به درخواست پایتون تون.
ببخشید من با گوشی هستم نمیتونم به درستی و با تصویر ضمیمه کردن راهنمایی کنم.
مسأله اینه که من اصلا نمیدونم باید از پروکسی تور استفاده کرد یا نه و تور مشکل رو حل میکنه یا نه. اروری که دریافت میکنم اینه:
ConnectionRefusedError: [WinError 10061]
ببینید تور مثل بقیه عمل میکنه و شما رو پروکسی میکنه (تحریم شکنه اینطوری فرض کنید). با توجه به اینکه توییتر فیلتره استفاده از هر پروکسی رایگانی در حالت دولوپمنت مشکلی نداره. چیزی که من به ذهنم میرسه اینه شما به درستی تونستید به پروکسی وصل بشید ولی اون کتابخونه tweepy رو ست نکردید از پروکسی استفاده کنه. داکیومنت tweepy رو ببینید: http://docs.tweepy.org/en/v3.5.0/api.html
حالا برای اینکه ببینیم یوزری که پایتون داره باهاش ران میشه دسترسی به متغیرهای محیطی که شما ست کردید داره و اونها رو میبینه یا نه اینطوری عمل کنید:
import os
print(os.environment.get('http_proxy')
اگر همونی که ست کردید رو توی پرینت دیدید که باید ببینیم چرا کار نمیکنه ولی اگر متغیر محیطی مقداری نداشت همون بحث اینه که شما برای یوزری دارید ست میکنید که پایتون با اون را نمیشه.
حتی میتونید این کار رو هم بکنید
import os
os.environment['http_proxy'] ='localhost:1234'
مقادیر مربوط به پروکسی رو با مقادیر درست جایگزین کنید و https_proxy رو هم ست کنید.
من با گوشی هستم واقعا نوشتن کد در کنار فارسی سخته.
اینکارو کنم و بجای 1234 بزارم 9150 ترافیک کل سیستم از تور رد میشه؟ اگه بخام ترافیک کل سیستمو از تور رد کنم با همون دستور set توی cmd اینکارو باید انجام داد؟
نه همه سیستم. هر کسی که با اون یوزری که اسکریپت/پروژه پایتونتون ران شده.
ببینید دقت نکردین من منظورم چی هست. هر یوزری برای خودش environment variable داره. در حال حاضر هم شما پایتون تون ممکنه با یوزر anonymous مثلا ران شده باشه (واقعا نمیدونم ویندوز چطور هندل میکنه اینها رو به همین خاطر میگم anonymous) حالا هر نرم افزاری که توی سیستم شما با این یوزری که پایتون باهاش ران شده، ران بشه به احتمال زیاد میاد ببینه آیا http_proxy و https_proxy ست شده یا خیر و اگر ست شده باشه میره از پروکسی استفاده میکنه.
راستی لطفا نام tweepy رو در عنوان تاپیکی که درست کردید قرار بدید که به عنوان یه تگ توی سرچ های سایر دوستان بیاد. واگر میتونید یه اسکرین شات از کد نهایی که زدید و بدرستی کار میکنه ضمیمه کنید که بقیه به صورت بصری ببینن.
خوشحال تونستم کمک کنم.
موفق باشید
اگه میشه خودت انجامش بده، چون من دقیقاً نمیدونم چه کلماتی هستن و چی باید جاشون بزارم. و تاپیک من هم اگه میشه حذف کن چون به نظرم اضافیه. همش یه جا باشه بهتره. ممنون.