[python] web api에서 뭔가 안된다 싶으면 일단 범인은 프록시다

kodman ingzart·2022년 1월 9일
1
post-thumbnail

#재현 코드라 정확히 일치하지 않을 수 있다
공공데이터포털에서 기상예보 정보를 좀 받아오고 싶어서 아래 심플 코드를 돌려봤더니

url = CALLBACK_URL
params = {
    'serviceKey': service_key_encode,
    'pageNo': '1',
    'numOfRows': '10',
    'dataType': data_type,
    'regId': region_code
}
response = requests.get(url, params=params)
res = response.content

염병 한번에 동작해주는 날이 없다

Web Page Blocked
Access to the web page you were trying to visit has been blocked in accordance with company policy.
Please contact your system administrator if you believe this is in error.
User: 대충 아이피
URL: apis.data.go.kr/1360000/FcstZoneInfoService/getFcstZoneCd?뒤에는대충파라미터
Category: not-resolved

원래는 html 코드 같은 엄청 긴 반환값이 돌아왔지만 대충 필요해 보이는 메시지만 뽑아다가 정리를 해보니 위와 같았다

보안정책이 매우 strict한 우리 회사 정책과 'Access ~~ has been blocked in accordance with company policy'라는 문구로 보안정책에 막힌건가 싶어서 냅다 전화문의 갈겼더니 프록시가 문제였음을 알게 됐다.

다음과 같이 프록시 설정을 하면

os.environ["http_proxy"] = 대충프록시주소와포트

시팔 역시나 다른 에러 발생
프록시 문제 해☆결★

방금 위에 발생한 다른 에러는 공공데이터포털에서 발급한 서비스키와 관련된 문제인데 다음 포스트에서 적어보겠다.


이전에 음성 인식 api speech_recognition을 이용하다가도 비슷한 문제에 직면했는데

import speech_recognition as sr


secretary = sr.Recognizer()
audio_path = 대충오디오경로
audio_file = sr.AudioFile(audio_path)
with audio_file as source:
    audio_src = secretary.record(source)
res = secretary.recognize_google(audio_src)

다음과 같은 에러를 만났다.

[winerror 10054] an existing connection was forcibly closed by the remote host

이 역시 마법의 프록시 설정 코드로 해결☆★

똑같은 코든데 집에서는 돼? 그럼 프록시네.

profile
An optimist who becomes pessimistic while working

0개의 댓글