python requests 사용 시 headers를 추가해도 403에러가 발생할 경우에는 어떻게 해야하나요?

조회수 3164회
whoscored = 'https://www.whoscored.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',
    'referer' : 'http://www.naver.com',
    'Content-Type': 'application/json; charset=utf-8'
    }
cookies = {'session_id': 'sorryidontcare'}
request = requests.get(searche_url,headers = headers, cookies=cookies)
print request

결과 : <Response [403]>

현재 이렇게 작성해서 크롤링 연습중인데 해당 사이트에는 header를 추가로 넘겨줘도 403에러가 발생하더라구요 혹시 이럴 때 접근 가능한 방법이 있을까요?

  • 요청이 403을 반환한 상황에 대해서 이를 정상응답 받기 위한 구체적인 가이드를 제시할 수는 없습니다. 서버가 어떻게 권한 설정을 했는지, 어떤 상황에서 403을 내려주는지는 클라이언트 입장에서 알 수 없기 때문이죠. 전의 댓글에서 말씀드렸듯, 무한한 삽질/때려맞추기 뿐입니다. doodoji 2019.8.1 11:52

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    Postman이라는 HTTP 요청 테스트 프로그램이 있습니다. 이걸로 별도 헤더, 쿠키, 인증 설정 하나도 없이 그냥 해당 주소 GET 을 보내봤습니다.

    GET  HTTP/1.1
    Host: www.whoscored.com
    User-Agent: PostmanRuntime/7.15.2
    Accept: */*
    Cache-Control: no-cache
    Postman-Token: 91164742-d18a-425a-908f-f56386de743d,c7bc4c16-2b3b-49d9-a128-5170200a258e
    Host: www.whoscored.com
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
    cache-control: no-cache
    

    그랬더니 사이트 소스가 정상적으로 응답이 되는데요...

    원하시는 것은 아마도 해당 사이트에 로그인하여 세션이 생성돼 있는 상황에서의 해당 주소를 "크롤링"하고 싶으신 것 같습니다. 만약 그렇다면, 근데 그거는 일단 여러 단계를 거쳐야 하고 (ID, PW 넣어서 로그인 요청하기 → 로그인 요청 응답에서 쿠키나 인증토큰 파싱하기 → 원하는 곳 "크롤링"할 때 해당 쿠키/인증토큰 태워서 요청보내기) 그 과정에서 재수가 없으면 (IP 체크 같은 게 일어날 경우 등) 아예 뭐가 안 될 수도 있습니다.

    아무튼 뭔가를 크롤링하시기 전에는 일단 순수 HTTP 요청만으로 응답을 받을 수 있는지부터를 Postman 같은 걸로 먼저 파악해 보세요. 그 응답이 돌아와야 "크롤링"을 해도 하는 것입니다.

    • postman에서 별다른 헤더, 쿠키 없이 주소 get했을 때 정상적으로 응답 되면 python에서도 제가 질문드린 코드대로해도 response 200이 나와야 정상인건가요? 파이썬으로 위의 코드처럼 실행했는데 response 403이 뜨는데 포스트맨말고 파이썬에서는 어떻게 해결을 해야되나요 김재민 2019.10.14 15:06
    • 파이썬에서 POST 하고계신가요? 답변에도 적기는 했는데.. 저는 일단 그냥 GET 해봤거든요 엽토군 2019.10.14 16:52
    • referer과 proxy 주소 여러개 넣고 우회해가면서 하니까 성공했습니다! 김재민 2019.10.15 11:09

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)