2017-12-22 1 views
0

웹 사이트를 긁어 내려고하고 Tor 모듈을 사용하여 프록시를 생성 한 다음 요청 모듈을 사용하여 웹 사이트를 크롤링합니다. 그러나 프록시가있는 요청 모듈은 웹 사이트에서 식별하고 api 페이지 (일부 api 정보를 보여주는 메시지가있는 html)와 함께 반환됩니다. 그러나 프록시없이 (원래의 IP 주소를 사용하여) 요청을 사용할 때 적절한 응답을 얻고 있습니다. 내 질문은 : 어떻게 웹 사이트가 올바르게 프록시에서 호출을 차단하고 원래의 IP (내 현재의 IP)에서 받아 들일 수 있어야 식별 온다. 여기 page_with_proxy요청시 작동하지 않는 프록시 사용

import requests 

from stem import Signal 
from stem.control import Controller 
def renew_connection(): 
    with Controller.from_port(port=9051) as controller: 
     controller.authenticate(password="my_password") 
     controller.signal(Signal.NEWNYM) 
proxies_http = { 
'http': 'http://127.0.0.1:8118' 
} 
url = 'http://www.websitename.com' #### Not showing real address 
page_with_proxy = requests.get(url , headers=random_header , proxies = proxies_http , timeout = 5) 

page = requests.get(url , headers=random_header , proxies = None , timeout = 5) 

몇 가지 API 정보를 가지고 (일부 링크에 도착했고 API에 등록), 그러나 (proxies == None 어디) 모든 HTML 세부 적절한 웹 페이지 정보가 page는 (나는 모든 XPath의를 찾을 수 있어요)입니다. 이것을 우회하는 방법이 있습니까, 아니면 웹 사이트가 쉽게 프록시를 사용하는지 여부를 어떻게 이해할 수 있습니까?

답변

0

많은 웹 사이트가 토르 노드 (및 기타 프록시 및/또는 VPN 서비스)의 액세스를 명시 적으로 차단하거나 적어도 몇 가지 추가 유효성 검사가 필요합니다. 이들은 일반적으로 요청의 IP 주소를 알려진 Tor 출구 노드의 목록과 일치시킴으로써이를 수행합니다.

단순히 프록시 서비스를 통해 요청을 전달하지 않는 것 외에는 좋은 해결책이 아닙니다.

+0

즉,이를 우회 할 수있는 방법이 없습니다. 해킹이나 workwrounds 없습니다. –