تنظیم پروکسی در پایتون و tweepy

سلام. دوستان میخواستم اسکریپتی بنویسم که از طریق پایتون بیام توییت ارسال کنم . همه چی فکر میکنم تنظیمه. ولی متاسفانه با اینترنت ایران نمیتونم توییت کنم و به پروکسی گیر میده. قبلا هم میخواستم برای تلگرام ربات درست کنم ولی بازم مشکل فیلترینگ دارم .

میشه یک راهنمایی کنید که چه طوری پروکسی تنظیم کنم روی کدها که درخواست از طریق اون ارسال بشه. یا حداقل نمونه کدی نشون بدید و یا چیزی که دقیق نشون بده . مرسی

import tweepy
import requests
proxies={'http':'socks://127.0.0.1:9050','https':'socks5://127.0.0.1:9050'}
API_KEY = "xxx"
API_SEC_KEY = "xx"
ACCESS_TOKEN = "xxx"
ACCESS_TOKEN_SEC = "xxx"
auth = tweepy.OAuthHandler(API_KEY,API_SEC_KEY)
auth.set_access_token(ACCESS_TOKEN,ACCESS_TOKEN_SEC)
api=tweepy.API(auth)
tweet="hello worl"
status=api.update_status(tweet)

هرجایی هم ایراد داشت بفرمایید
1 Likes

کد زیر نگاه کنید , با استفاده از tor یه request زده شده به یوتیوب که کد 200 برگشته , یعنی ارتباط برقرار هستش
ماژول PySocks باید نصب بشه

Screenshot%20from%202019-10-07%2021-43-49

امیدوارم کمکتون کنه

1 Likes

سلام. فکر می‌کنم کتابخونه requests خودش میاد از environment variable سیستمتون دنبال دو متغیر http_proxy و https_proxy میگرده و اگر وجود داشته باشن ریکویست ها رو از طریق پروکسی میزنه. یعنی شما اگر بتونید این دو متغیر رو درست ست کنید فیلترینگ رو رد میکنید.

1 Likes

چطوری درست تنظیمشون کنیم؟ یکی بیاد به زبون ساده توضیح بده.

ورژن پایتان که الان سه و خورده ایه. و به جای کلمه های proxy و myproxy هم چیز خاصی باید تایپ کنم یا نه؟

set http_proxy=http://proxy.myproxy.com
set https_proxy=http://proxy.myproxy.com

اگر میخواید کل ریکویست هاتون از پروکسی استفاده کنن میتونید اون دو متغیر محیطی environment variable رو تنظیم کنید ولی اگر فقط یکسری ریکویست ها مورد نظره از داخل کدهاتون این تغییر رو بدید. این بلاگ خوب توضیح داده حالات مختلف رو
https://www.google.com/amp/s/blog.scrapinghub.com/python-requests-proxy%3Fhs_amp=true

شما باید جای اون my proxy اطلاعات پروکسی تون رو بزنید خب! یعنی آی پی(دامین) و پورت. از چه پروکسی دارید استفاده می‌کنید؟

هیچ وی پی انی استفاده نمیکنم. تنظیمای عادی خود ویندوزه.
اینا رو توی cmd تایپ کردم و اینتر زدم، بعد برنامه رو اجرا کردم، انگار نه انگار.

set http_proxy=http://proxy.xxx.xxx.x.xxx.com:9150
set https_proxy=http://proxy.xxx.xxx.x.xxx.com:9150

دقت کنید که هر یوزر برای خودش environment variable داره. پس ببینید شما با چه یوزری دارید کد رو اجرا میکنید و در محیط اون یوزرتون environment variable رو ست کنید.
اول توی کدتون از طریق زیر پروکسی رو ست کنید (پروکسی مربوط به تور یا هر چیز دیگه ای که دارید) اگر کار کرد بیاید آزمایش و خطا کنید چطور میتونید برای هر یوزر environment variable ست کنید.


من ویندوز کار نکردم اطلاعاتم ناقصه ولی مثلا وقتی command prompt رو run as administrator بالا میارید دارید متغیرهای محیطی رو برای یوزر ادمین (روت) ست میکنید. با زدن دستور set (به تنهایی) میتونید لیست متغیرهایی که ست شده رو ببینید.

1 Likes

با توجه به اینکه یکبار تلاش کردید از تور استفاده کنید ببینید این سورس به کارتون میاد
https://www.sylvaindurand.org/use-tor-with-python/88
در مورد اینکه چی باید بجای my proxy و proxy ست کنید اینطوری نگاه کنید که باید به پکیج ریکویست پایتون بگید که از کجا میتونه به پروکسی وصل بشه. پروکسی هم توضیح سادش اینطوریه که ریکویست شما رو میگیره می‌فرسته به سرور خودش و از سرور خودش به اونجا که شما میخواید ریکویست میزنه و هر چی جواب بود برمیگردونه میده به شما. مثل اون بچگی ما هست که داییمون بهمون نامه میداد بدیم به دختر همسایه و جواب نامه رو از دختره بگیریم برگردونیم بهش :slight_smile: خودش مستقیم ریکویست نمیزد و ما رو واسطه می‌کرد که ردیابی نشه.
حالا شما تور بروزر رو باز میکنی و ای پی و پورتی که تور بروزر روی اون گوش میکنه رو میدی به پایتون تون، پایتون به تور به کمک این ای پی و پورت درخواست میده، تور به سرورهای خودش درخواست میده و…
اگر تور بروزر رو در سیستم خودتون بدون دست زدن به تنظیماتش ران کنید روی localhost:9050 میتونید بهش ریکویست بزنید.دقت کنید باید تور باز باشه تا روی این پورت گوش بده به درخواست پایتون تون.
ببخشید من با گوشی هستم نمیتونم به درستی و با تصویر ضمیمه کردن راهنمایی کنم.

1 Likes

مسأله اینه که من اصلا نمیدونم باید از پروکسی تور استفاده کرد یا نه و تور مشکل رو حل میکنه یا نه. اروری که دریافت میکنم اینه:
ConnectionRefusedError: [WinError 10061]

ببینید تور مثل بقیه عمل میکنه و شما رو پروکسی میکنه (تحریم شکنه اینطوری فرض کنید). با توجه به اینکه توییتر فیلتره استفاده از هر پروکسی رایگانی در حالت دولوپمنت مشکلی نداره. چیزی که من به ذهنم میرسه اینه شما به درستی تونستید به پروکسی وصل بشید ولی اون کتابخونه tweepy رو ست نکردید از پروکسی استفاده کنه. داکیومنت tweepy رو ببینید:
http://docs.tweepy.org/en/v3.5.0/api.html

1 Likes

حالا برای اینکه ببینیم یوزری که پایتون داره باهاش ران میشه دسترسی به متغیرهای محیطی که شما ست کردید داره و اونها رو میبینه یا نه اینطوری عمل کنید:

import os
print(os.environment.get('http_proxy')

اگر همونی که ست کردید رو توی پرینت دیدید که باید ببینیم چرا کار نمیکنه ولی اگر متغیر محیطی مقداری نداشت همون بحث اینه که شما برای یوزری دارید ست میکنید که پایتون با اون را نمیشه.
حتی میتونید این کار رو هم بکنید

import os
os.environment['http_proxy'] ='localhost:1234'

مقادیر مربوط به پروکسی رو با مقادیر درست جایگزین کنید و https_proxy رو هم ست کنید.
من با گوشی هستم واقعا نوشتن کد در کنار فارسی سخته.

1 Likes

مشکل حل شد! اصلا نیاز به استفاده از هیچ کتابخونۀ اضافی ای نبود، فقط همون پارامتر proxy باید بهش مقدار میدادم. که مال تور رو دادم و راه افتاد! مرسی :grin:

1 Likes

اینکارو کنم و بجای 1234 بزارم 9150 ترافیک کل سیستم از تور رد میشه؟ اگه بخام ترافیک کل سیستمو از تور رد کنم با همون دستور set توی cmd اینکارو باید انجام داد؟

نه همه سیستم. هر کسی که با اون یوزری که اسکریپت/پروژه پایتونتون ران شده.
ببینید دقت نکردین من منظورم چی هست. هر یوزری برای خودش environment variable داره. در حال حاضر هم شما پایتون تون ممکنه با یوزر anonymous مثلا ران شده باشه (واقعا نمیدونم ویندوز چطور هندل میکنه اینها رو به همین خاطر میگم anonymous) حالا هر نرم افزاری که توی سیستم شما با این یوزری که پایتون باهاش ران شده، ران بشه به احتمال زیاد میاد ببینه آیا http_proxy و https_proxy ست شده یا خیر و اگر ست شده باشه میره از پروکسی استفاده میکنه.
راستی لطفا نام tweepy رو در عنوان تاپیکی که درست کردید قرار بدید که به عنوان یه تگ توی سرچ های سایر دوستان بیاد. واگر میتونید یه اسکرین شات از کد نهایی که زدید و بدرستی کار میکنه ضمیمه کنید که بقیه به صورت بصری ببینن.
خوشحال تونستم کمک کنم.
موفق باشید

1 Likes

اگه اینجا رو ویرایش میکردن بهتر بود. اونجا حرف زیادی نزدیم و من هم درست مشکلو توضیح ندادم. تاپیک خودم اضافی بود بنظرم.

دوست عزیزم یه لطف کن کلماتی که ممکن باعث فیلتر شدن سایت می شه رو از پستت حذف کن یا با کلمات دیگه ای عوضشون کن. دستت درد نکنه

2 Likes

اگه میشه خودت انجامش بده، چون من دقیقاً نمیدونم چه کلماتی هستن و چی باید جاشون بزارم. و تاپیک من هم اگه میشه حذف کن چون به نظرم اضافیه. همش یه جا باشه بهتره. ممنون. :slightly_smiling_face: