web-dev-qa-db-fra.com

Demandes Python. 403 interdit

J'avais besoin d'analyser un site , mais j'ai eu une erreur 403 Forbidden . Voici un code:

url = 'http://worldagnetwork.com/'
result = requests.get(url)
print(result.content.decode())

Sa sortie:

<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>

S'il vous plaît, dites quel est le problème.

31

Il semble que la page rejette les demandes GET qui n'identifient pas un User-Agent. J'ai visité la page avec un navigateur (Chrome) et copié l'en-tête User-Agent de la demande GET (consultez l'onglet Réseau des outils de développement):

import requests
url = 'http://worldagnetwork.com/'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
result = requests.get(url, headers=headers)
print(result.content.decode())

# <!doctype html>
# <!--[if lt IE 7 ]><html class="no-js ie ie6" lang="en"> <![endif]-->
# <!--[if IE 7 ]><html class="no-js ie ie7" lang="en"> <![endif]-->
# <!--[if IE 8 ]><html class="no-js ie ie8" lang="en"> <![endif]-->
# <!--[if (gte IE 9)|!(IE)]><!--><html class="no-js" lang="en"> <!--<![endif]-->
# ...
84

Si vous êtes le propriétaire/administrateur du serveur et que la solution acceptée ne vous convient pas, essayez alors de désactiver la protection CSRF (lien vers une réponse SO)

J'utilise Spring (Java). La configuration nécessite donc que vous créiez un fichier SecurityConfig.Java contenant:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure (HttpSecurity http) throws Exception {
        http.csrf().disable();
    }
    // ...
}
0
Casper