Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proxy #36

Open
DKanarsky opened this issue Mar 13, 2018 · 10 comments
Open

Proxy #36

DKanarsky opened this issue Mar 13, 2018 · 10 comments

Comments

@DKanarsky
Copy link

Есть способ задать прокси для отправки запросов с разных ip адресов. Известно ли какой лимит и штрафные санкции?

@ramusus
Copy link
Owner

ramusus commented Mar 19, 2018

Нет, не известно. После начала использования сессий, я не видел больше капчи в ответах

@DKanarsky
Copy link
Author

Опытным путем было выяснено, что get_content('main_page') срабатываем около полусотни раз, после чего ip жестко банится на сутки. Если действовать через тор, то довольно часто появляется каптча, плюс многие точки выхода уже забанены, то есть похоже, что ведется какой-то black list ip, но это не точно.

@ramusus
Copy link
Owner

ramusus commented Mar 20, 2018

тогда нужно прикручивать прокси. Я бы предпочел бы это сделать отдельно подключаемым опциональным модулем. В самом простом случае requests позволяет это делать через переменную окружения http://docs.python-requests.org/en/master/user/advanced/#proxies

@DKanarsky
Copy link
Author

DKanarsky commented Mar 20, 2018

Можно дать возможность передавать в качестве параметра уже настроенный на прокси request. Тогда можно было бы и headers подставлять и много еще чего менять.

@theshadowagent
Copy link

theshadowagent commented Mar 21, 2018

Похожая проблема, начал выдавать капчу при вызове get_content('main_page'), только мой IP вроде еще не забанен (с браузера ввел капчу один раз, и в браузере заработало), и при отдельном вызове requests.get('kinopoisk.ru') капчу не выдает. Много запросов не делал. Пробовал менять константу HEADERS, не помогает. Без прокси никак?
P.S. Поиск работает, поэтому моя проблема похожа на проблему из темы Movie, поскольку из-за страницы с капчей объект при вызове get_content не заполняется

@theshadowagent
Copy link

Заработало когда изменил фильм. Видимо, капча вылезает при нескольких запросах к одному и тому же фильму

@sstifler
Copy link

sstifler commented Sep 12, 2019

тогда нужно прикручивать прокси. Я бы предпочел бы это сделать отдельно подключаемым опциональным модулем. В самом простом случае requests позволяет это делать через переменную окружения http://docs.python-requests.org/en/master/user/advanced/#proxies

На данный момент функцию для работы через прокси так и не реализовали?
теоретически можно сделать так: master...fatklass:patch-1

А как теперь передать из скрипта прокси?

@ramusus
Copy link
Owner

ramusus commented Sep 12, 2019

@fatklass я прокси для своих целей не использую. Можно задавать список проки через переменную окружения.

@sstifler
Copy link

sstifler commented Sep 12, 2019

@ramusus Пожалуйста можно подробнее?

А то я тут костылей понаставил в request.py, но вроде бы работает.

`    def get(self, *args, **kwargs):
        import random
        kwargs['headers'] = self.headers
        proxy = ['ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port',ip:port']
        kwargs['proxies'] = {'http': 'http://login:pass@'+random.choice(proxy),'https': 'https://login:pass@'+random.choice(proxy)}
        response = self.session.get(*args, **kwargs)
        response.connection.close()
        return response
` 

@ramusus
Copy link
Owner

ramusus commented Sep 12, 2019

что-то типа такого:

     import os
     import random

     def get(self, *args, **kwargs):
        kwargs['headers'] = self.headers
        proxy = os.environ['KINOPOISK_PROXIES']'
        if proxy:
          kwargs['proxies'] = { 'http': 'http://'+random.choice(proxy) }
        response = self.session.get(*args, **kwargs)
        response.connection.close()
        return response

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants