반응형
<질문>
사이트를 구문 분석해야하는데 403 Forbidden 오류가 발생했습니다. 다음은 코드입니다.
url = 'http://worldagnetwork.com/'
result = requests.get(url)
print(result.content.decode())
출력 :
403 Forbidden
403 Forbiddennginx
문제가 무엇인지 말 해주세요.
<답변1>
페이지가 User-Agent를 식별하지 않는 GET 요청을 거부하는 것 같습니다. 브라우저 (Chrome)로 페이지를 방문하고 GET 요청의 User-Agent 헤더를 복사했습니다 (개발자 도구의 네트워크 탭에서 확인).
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>
#
#
#
#
# ...
<답변2>
Alberto의 답변에 추가하십시오.
user-agent를 추가 한 후에도 403 Forbidden이 계속 표시되는 경우 리퍼러와 같은 헤더를 더 추가해야 할 수 있습니다.
headers = {
'User-Agent': '...',
'referer': 'https://...'
}
헤더는 개발자 도구의 네트워크> 헤더> 요청 헤더에서 찾을 수 있습니다. (F12를 눌러 전환합니다.)
<답변3>
귀하가 서버의 소유자 / 관리자이고 수락 된 솔루션이 귀하에게 적합하지 않은 경우 CSRF 보호를 비활성화하십시오 (SO 답변 링크).
저는 Spring (Java)을 사용하고 있으므로 설정하려면 다음을 포함하는 SecurityConfig.java 파일을 만들어야합니다.
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure (HttpSecurity http) throws Exception {
http.csrf().disable();
}
// ...
}
<답변4>
다음을 사용해보십시오.
import requests
requests.get(url, auth=('username','password'))
반응형
'개발 > Python' 카테고리의 다른 글
파이썬 사전 업데이트 방법 물어보다 (0) | 2020.10.02 |
---|---|
localhost (python 요청)에 연결하려고 할 때 CSRF와 관련된 403 오류 발생 (0) | 2020.10.02 |
파이썬 요청으로 csrftoken 전달 (0) | 2020.10.02 |
파일에 쓸 때 파이썬에서 새 줄을 어떻게 지정합니까? (0) | 2020.09.22 |