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에러가 발생하더라구요 혹시 이럴 때 접근 가능한 방법이 있을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
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
댓글 입력