У меня возникла эта проблема при загрузке состояния кэшированного сокращения. Если я просто загружаю состояние кеширования, я бы столкнулся с ошибками для новой версии приложения с обновленной структурой состояния.
Уже упоминалось, что lodash предлагает функцию merge
, которую я использовал:
const currentInitialState = configureState().getState();
const mergedState = _.merge({}, currentInitialState, cachedState);
const store = configureState(mergedState);
from urllib.request import urlopen, Request
urlopen(Request(url, headers={'User-Agent': 'Mozilla'}))
Я просто ответил на аналогичный вопрос: https://stackoverflow.com/a/43501438/206820
Если вы просто не просто хотите открыть URL-адрес, но также хотите загрузить ресурс (скажем, файл PDF), вы можете использовать код, как показано ниже:
# proxy = ProxyHandler({'http': 'http://192.168.1.31:8888'})
proxy = ProxyHandler({})
opener = build_opener(proxy)
opener.addheaders = [('User-Agent','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30')]
install_opener(opener)
result = urlretrieve(url=file_url, filename=file_name)
Причина, по которой я добавил прокси, - отслеживать трафик в Чарльзе, и вот трафика я получил:
Отказ узла узла исходит из основных правил OWASP ModSecurity для модульной безопасности Apache. Правило 900002 имеет список «плохих» пользовательских агентов, а один из них - «python-urllib2». Вот почему запросы с пользовательским агентом по умолчанию терпят неудачу.
К сожалению, если вы используете функцию «robotparser» Python,
он использует пользовательский агент Python по умолчанию, и нет никакого параметра для его изменения. Если попытка «robotparser» прочитать «robots.txt» отклоняется (а не только URL не найден), тогда он обрабатывает все URL-адреса с этого сайта как запрещенные.