Добрый день, пишу парсер одного сайта, разбил его на потоки, работает по следующему принципу - передается массив прокси и соразмерный ему массив ссылок, с помощью grequests все парсится. Вопрос в том, что на моей машине (windows 10) все парсится нормально, вот код:
proxies = []
authes = []
for proxy in raw_proxies:
host = proxy.split('@')[0]
auth_arr = proxy.split('@')[1]
auth = HTTPProxyAuth(auth_arr.split(':')[0], auth_arr.split(':')[1])
authes.append(auth)
proxies.append(dict(http='socks5://'+auth_arr+"@"+host, https='socks5://'+auth_arr+"@"+host))
for link, name, proxy, auth in zip(urls, names, proxies, authes):
rs.append(grequests.get(link, proxies=proxy, auth=auth))
results = grequests.map(rs)
Тут все работает нормально, проверил через 2ip.ru, возвращает указанный в прокси ip. Однако когда я залил это на хостинг, вместо массива реквестов 200 возвращает массив None!
Сделал тестовый код:
def with_proxy():
proxy = '****:*****@******:*****'
host = proxy.split('@')[0]
auth_arr = proxy.split('@')[1]
auth = HTTPProxyAuth(auth_arr.split(':')[0], auth_arr.split(':')[1])
proxies=dict(http='socks5://'+auth_arr+"@"+host, https='socks5://'+auth_arr+"@"+host)
rs = [grequests.get('https://google.com', proxies=proxies, auth=auth)]
result = grequests.map(rs)
print('Запрос с прокси->', result)
def without_proxy():
rs = [grequests.get('https://google.com')]
result = grequests.map(rs)
print('Запрос без прокси->', result)
with_proxy()
without_proxy()
Результат на моей тачке:
Запрос с прокси-> [<Response [200]>]
Запрос без прокси-> [<Response [200]>]
На двух хостах, один неизвестен мне, другой мой, от рег ру:
Запрос с прокси-> [None]
Запрос без прокси-> [<Response [200]>]
В чем причина такого поведения, и можно ли это как нибудь обойти?