Closed darkcorpd closed 2 years ago
Можете привести минимальный пример кода, на котором воспроизводится ошибка?
С использованием модуля apimoex:
import requests
import apimoex
import pandas as pd
def get_security_board(ticker):
with requests.Session() as session:
data = apimoex.find_securities(session, ticker, columns = None)
df = pd.DataFrame(data)
print(df.at[0, 'primary_boardid'])
board = get_security_board('RU0007661625')
Или самый простой без apimoex:
import requests
url = 'http://iss.moex.com/iss/index.json'
response = requests.get(url, headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36'})
response.status_code
И у вас первый код выдает ошибку?
У меня все работает.
Не исключаю, что это какая-то защита на стороне MOEX против вашего IP. Или вы слишком бомбили их запросами, или кто-то у вашего провайдера попал в список подозрительных IP и заблокировали диапазон.
Да, вчера я довольно активно тестировал запросы. Сегодня все блокируется, хотя в браузере открывается. Я запускал код из разных источников, в т.ч. через мобильный интернет, но пока не смог решить проблему. Есть ли какой-то выход?
А второй вариант кода без apimoex работает?
Тоже нет. При этом из того же нотбука загрузка курсов валют с сайта ЦБ работает.
А обращение к http://iss.moex.com/iss/index.json в браузере работает?
Если браузер работает, то нужно посмотреть, какие заголовки он посылает и создать такой же (атрибут headers у requests.Session()). По идее должно работать.
А дальше вести себя более осторожно: не бомбить огромным числом запросов, не посылать повторные однотипные запросы, а сохранять нужную информацию локально после одного запроса.
Похоже, сервер MOEX блокирует запросы не из российских IP. Обращение к http://iss.moex.com/iss/index.json в браузере работает, но код я запускал из Google Colab, поэтому видимо сервер отказывает в доступе. Сейчас проверил доступность из другой страны - сайт moex.com недоступен.
This site can’t be reached
moex.com took too long to respond.
Try:
Checking the connection
Checking the proxy and the firewall
Running Windows Network Diagnostics
ERR_CONNECTION_TIMED_OUT
Я бы не сказал, что бомбил сервер, но мало ли. В любом случае, спасибо.
Это может быть проблемой - сейчас много атак, поэтому могут резать по региональному признаку.
Еще по опыту, если код многопоточный они не очень любят более 10-20 параллельных обращений API.
Отчитаюсь. С российских IP все работает. Через colab.google сервер Мосбиржи перестал пускать. Похоже, в принципе блокирует иностранные айпи.
Отчитаюсь. С российских IP все работает. Через colab.google сервер Мосбиржи перестал пускать. Похоже, в принципе блокирует иностранные айпи.
У них уже такое было - через colab не работало какое-то время, потом снова открылось, сейчас видимо закрылось.
Может закроем ишью, чтобы не висело, @darkcorpd, @WLM1ke?
Я не против. Но неплохо бы указать, что сервер Мосбиржи стал недоступен с иностранных IP.
Я не против. Но неплохо бы указать, что сервер Мосбиржи стал недоступен с иностранных IP.
неплохо бы указать - кому и где? Это задача биржи и документации к API, не опен-сорсного пакета.
Добрый день!
Вчера все прекрасно работало, а сегодня столкнулся с ошибкой сервера: ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer')) ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
Хотя в браузере при этом ссылки запросов открываются. В чем может быть проблема и каковы пути решения?
Спасибо