1

Тема: Робота з requests

Як я тільки не ізвращався з модулем requests, але так і не отримав очікуваного результату. Експериментів було просто кабздец багато...
Допоможіть прикрутити приватні HTTPS проксі (104.224.145.175:8080:login:pass) для відправки get запитів :[

2

Re: Робота з requests

3.4. Бажано в повідомленні вказувати наступне:

мову програмування
середовище в якому працюєте
фрагменти непрацюючого коду
описуєте з чим у вас виникли проблеми
3.5. Теми без будь-яких напрацювань будуть просто ігноруватись учасниками форуму, а модератори при першій можливості перенесуть їх в кошик для сміття.

3

Re: Робота з requests

Мова програмування Python згідно розділу форуму)
Pycharm (Linux Mint)
фрагменти непрацюючого коду

def getPars(proxy):
    get = requests.get("http://ip.xss.myip.ru/", proxies=proxy)
    get = get.json()
    return get

print(getPars('https://coinBot:coinBot@104.224.145.175:8080'))

скрін
https://preview.ibb.co/cc9038/017.png

4

Re: Робота з requests

ну от, отримавши get (хоча назвіть це r або resp (response) , бо гет - годиться для функції чи методу а не для змінної )
так от , отримавши  - надрукуйте його значення , а якщо у Вас пайчарм - поставте брейкпоінт - і дослідуть - що насправді Ви отримали внаслідок запиту

5 Востаннє редагувалося ping (25.05.2018 12:39:56)

Re: Робота з requests

наскільки я бачу в документації - proxies має бути множиною а Ви передаєте стрінг

import requests

proxies = {
  'http': 'http://10.10.1.10:3128',
  'https': 'http://10.10.1.10:1080',
}

requests.get('http://example.org', proxies=proxies)

http://docs.python-requests.org/en/mast … d/#proxies

Подякували: Cryptoman, koala, leofun013

6

Re: Робота з requests

змінив назву перемінної, але безрезультатно. В планах юзати свої приватні проксі з логіном та паролем... як авторизувати тоді їх?

7

Re: Робота з requests

Вам же написали: проблема в типі, а не в назві.

proxy = {'https': 'http://10.10.1.10:1080'}

а не

proxy = 'http://10.10.1.10:1080' #WRONG!

8

Re: Робота з requests

помилку зрозумів! лишилось зрозуміти як авторизувати дані проксі?

9

Re: Робота з requests

Cryptoman написав:

помилку зрозумів! лишилось зрозуміти як авторизувати дані проксі?

To use HTTP Basic Auth with your proxy, use the http://user:password@host/ syntax:

proxies = {'http': 'http://user:pass@10.10.1.10:3128/'}

http://docs.python-requests.org/en/mast … d/#proxies

Подякували: koala, Cryptoman2

10 Востаннє редагувалося Cryptoman (25.05.2018 13:40:13)

Re: Робота з requests

del

11

Re: Робота з requests

Так, а чому ви намагаєтеся через https-проксі до http-сайту дістатися?

12

Re: Робота з requests

горе програміст я) дуже всім вдячний за допомогу!

13

Re: Робота з requests

Ви нормальний програміст, просто треба уважніше вивчати наявну інформацію перед звертанням на форум.

Подякували: Cryptoman, FakiNyan2

14

Re: Робота з requests

мозок закипів... Потрібні рекомендації, а то відчуваю що все дуже ускладнюю.
Задача: В замкнутому циклі парсити дані 1 раз секунду, обмеження від сторони ресурса отримання даних, один раз в 5сек. Обхід обмеження в проксях, які треба застосовувати почергово тобто перша прокся, друга прокся і так далі (по ідеї 5ть проксь треба).
Проблема: Робота з словниками це просто якась армагідец, як їх використовувати для даних цілей?
В принципі є варіант витягати по штучно в циклі проксі та перезаписувати словник. Надіюсь що присутній більш простіший варіант.

15 Востаннє редагувалося ping (25.05.2018 18:47:35)

Re: Робота з requests

Cryptoman написав:

мозок закипів... Потрібні рекомендації, а то відчуваю що все дуже ускладнюю.
Задача: В замкнутому циклі парсити дані 1 раз секунду, обмеження від сторони ресурса отримання даних, один раз в 5сек. Обхід обмеження в проксях, які треба застосовувати почергово тобто перша прокся, друга прокся і так далі (по ідеї 5ть проксь треба).
Проблема: Робота з словниками це просто якась армагідец, як їх використовувати для даних цілей?
В принципі є варіант витягати по штучно в циклі проксі та перезаписувати словник. Надіюсь що присутній більш простіший варіант.

до чого тут словник? не зрозумів, нащо він Вам.

формуєте собі циклічний генератор з кількох проксі, далі щосекнди берете з нього наступну проксю



import time 

class Rainbow:
    colors = [
        'red',
        'orange',
        'yellow',
        'green',
        'blue',
        'indigo',
        'violet',
    ]

    def __init__(self, circle=True):
        self.circle = circle

    def _get_colors(self):
        i = 0
        while self.circle:
            yield self.colors[i]
            i += 1
            i %= len(self.colors)

    def __iter__(self):
        return iter(self._get_colors() if self.circle else self.colors)


for color in Rainbow(circle=True):
    time.sleep(1)
    print(color)

input('Press "Enter" to continue')

https://repl.it/@viach/class-Rainbow

Подякували: Cryptoman1

16

Re: Робота з requests

Мабуть я щось не розумію... словник для того щоб задіяти проксі в модулі requests

proxy = {'https': 'http://10.10.1.10:1080'}

17 Востаннє редагувалося ping (25.05.2018 19:33:59)

Re: Робота з requests

Cryptoman написав:

Мабуть я щось не розумію... словник для того щоб задіяти проксі в модулі requests

proxy = {'https': 'http://10.10.1.10:1080'}

це я неуважний.
таки словник
то дайте словник з одним ключем, а у значення - виклик наступного значення генератора

import time 

class Rainbow:
    colors = [ 'red','orange','yellow','green','blue','indigo','violet',    ]

    def __init__(self):
        pass

    def __iter__(self):
        i = 0
        while True:
            yield self.colors[i]
            i += 1
            i %= len(self.colors)

r=Rainbow()

for i in r:
    time.sleep(1)
    print({'key':i})
Подякували: Cryptoman1

18 Востаннє редагувалося koala (25.05.2018 19:11:22)

Re: Робота з requests

Ви просто забагато думаєте про внутрішню структуру. Абстрагуйтеся. Ось чисто процедурне рішення:

proxy_list = [{"https":"proxy1"},
              {"https":"proxy2"},
              {"https":"proxy3"},
              {"https":"proxy4"},
              {"https":"proxy5"}]
current_proxy = 0
while True: #основний цикл
  ...
  requests.get("http://ip.xss.myip.ru/", proxies=proxy_list[current_proxy])
  current_proxy = (current_proxy+1)%len(proxy_list)
  ...
  time.sleep(1)
Подякували: Cryptoman1

19 Востаннє редагувалося koala (25.05.2018 19:18:02)

Re: Робота з requests

Але можна скористатися функцією cycle і позбавитися зайвої змінної та формули:
import itertools

proxy_list = itertools.cycle(
             [{"https":"proxy1"},
              {"https":"proxy2"},
              {"https":"proxy3"},
              {"https":"proxy4"},
              {"https":"proxy5"}])
...
requests.get("http://ip.xss.myip.ru/", proxies=next(proxy_list))
Подякували: Cryptoman, leofun012