Urllib.error.HTTPError: HTTP Error 403: Forbidden

Fermé
boezio - Modifié le 23 nov. 2022 à 12:07
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 23 nov. 2022 à 12:09

Bonjour,

Je cherche à écrire un programme permettant de récupérer les données tocks d'une paires de devises en utilisant l'API de FXCM, qui se nomme fxcmpy pour python.

Quand je réalise l'étape permettant d'importer et décompresser des données, j'ai le message d'erreur suivant : 

http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

Je sais que lorsque l'on essaie d'importer des données en ligne, ce message d'erreur est généralement dû au fait que le programme est détecté comme une sorte de bot, ou quelque chose d'indésirable du moins, est c'est pourquoi on se fait rejeter de cette manière.

Seulement, dans mon cas je ne comprends pas ce que je pourrais changer. Je ne peux pas passer par un use-agent comme mozilla... du moins je ne vois pas comment.

Bref, mon code ressemble a cela pour l'instant :

import pandas as pd
import time
import numpy as np
import datetime as dt
import matplotlib.pyplot as plt 
from pylab import mpl, plt 

plt.style.use('seaborn')
#Affiche: <stdin>:1: MatplotlibDeprecationWarning: The seaborn styles shipped by Matplotlib are deprecated since 3.6, as they no longer correspond to the styles shipped by seaborn. However, they will remain available as 'seaborn-v0_8-<style>'. Alternatively, directly use the seaborn API instead.
mpl.rcParams['font.family'] = 'serif'

#les import et prepatifs d'import sont effectué

from fxcmpy import fxcmpy_tick_data_reader as tdr 

print(tdr.get_available_symbols())
# Affiche: ('AUDCAD', 'AUDCHF', 'AUDJPY', 'AUDNZD', 'CADCHF', 'EURAUD', 'EURCHF', 'EURGBP', 'EURJPY', 'EURUSD', 'GBPCHF', 'GBPJPY', 'GBPNZD', 'GBPUSD', 'GBPCHF', 'GBPJPY', 'GBPNZD', 'NZDCAD', 'NZDCHF', 'NZDJPY', 'NZDUSD', 'USDCAD', 'USDCHF', 'USDJPY')
#toutes les paires disponibles

start = dt.datetime(2018, 6, 25) 
stop = dt.datetime(2018, 6, 30) 

#def des dates depart et fin de l'import

td = tdr('EURUSD', start, stop)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\aubin\AppData\Local\Programs\Python\Python311\Lib\site-packages\fxcmpy\fxcmpy_data_reader.py", line 96, in __init__
    self.__fetch_data__()
  File "C:\Users\aubin\AppData\Local\Programs\Python\Python311\Lib\site-packages\fxcmpy\fxcmpy_data_reader.py", line 174, in __fetch_data__
    data = self.__fetch_dataset__(url)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\aubin\AppData\Local\Programs\Python\Python311\Lib\site-packages\fxcmpy\fxcmpy_data_reader.py", line 185, in __fetch_dataset__
    requests = urllib.request.urlopen(url)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\aubin\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 216, in urlopen
    return opener.open(url, data, timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\aubin\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 525, in open
    response = meth(req, response)
               ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\aubin\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 634, in http_response
    response = self.parent.error(
               ^^^^^^^^^^^^^^^^^^
  File "C:\Users\aubin\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 563, in error
    return self._call_chain(*args)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\aubin\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 496, in _call_chain
    result = func(*args)
             ^^^^^^^^^^^
  File "C:\Users\aubin\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 643, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

Si quelqu'un a une idée, sait comment résoudre le problème, ou sa source... bref toute sorte d'informations, je suis preneur !!

A voir également:

3 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
18 nov. 2022 à 20:02

bonjour,

as-tu fait le nécessaire pour le token?

0

Le token d'acceès à l'API ?

Je l'ai redirigé au dessus oui, et normalement il est bon, j'avoue que je n'ai pas vérifier en détail.

Mais il me semble qu'il n'y a pas besoin d'avoir une API ouverte sur le broker pour avoir accès aux données de marche...

0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
19 nov. 2022 à 10:02

A quelle ligne de code as-tu spécifié le token?

Merci d'utiliser ceci pour partager ton code: https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
23 nov. 2022 à 12:09

Bonjour,

Je ne sais pas si c'est lié mais quand on va sur le site de FXCM on te dit que ce site n'est pas ouvert aux résidents français. Au delà du token, il y a donc vraisemblablement un filtre IP du côté du serveur qui t'empêche d'y accéder.

0