파충류가 웹 페이지를 만나면 붓기를 막을까요?
웹 페이지를 방문할 때 차단되고, 당신의 IP를 봉쇄하고, 로그인 검증 등 수단을 써서 기어오르는 사람들이 뜻을 이루지 못하게 하지만, 길은 한 자 높고, 마는 한 장 높다.나는 반파충류의 제한을 돌파하는 공법을 연구하기 시작했다
1. 위장 유랑기 머리
많은 서버들이 브라우저가 보낸 헤더를 통해 인간 사용자인지 확인하기 때문에 우리는 브라우저의 행위 구조를 모방하여 헤더를 서버에 요청할 수 있다.서버는 그 중의 일부 파라미터를 식별하여 당신이 인간 사용자인지 아닌지를 식별할 수 있습니다. 많은 사이트에서 User-Agent라는 파라미터를 식별하기 때문에 요청 헤더를 가져가는 것이 가장 좋습니다.일부 경각성이 비교적 높은 사이트는 다른 매개 변수를 통해 식별할 수 있다. 예를 들어 Accept-Language를 통해 당신이 인간 사용자인지 아닌지를 판별할 수 있고, 일부 도난 방지 체인 기능이 있는 사이트는referer라는 매개 변수를 가지고 있어야 한다.
2.랜덤 생성 UA
User-Agent라는 매개 변수만 있으면 페이지 정보를 캡처할 수 있지만, 몇 페이지를 연속으로 캡처하면 서버에 의해 막힙니다.따라서 데이터를 잡을 때마다 서로 다른 브라우저를 모의하여 요청을 보내기로 결정하고 서버는 User-Agent를 통해 서로 다른 브라우저를 식별하기 때문에 페이지를 찾을 때마다 랜덤으로 서로 다른 UA구조 헤더를 생성하여 서버를 요청할 수 있다.
3.기어오르는 속도를 늦추다
서로 다른 브라우저에서 데이터를 추출하는 것을 시뮬레이션했지만 어떤 시간대에는 백 페이지에 달하는 데이터를 추출할 수 있지만 때로는 10여 페이지만 추출할 수 있다는 것을 발견했다. 서버는 당신의 방문 빈도에 따라 당신이 인간 사용자인지 인터넷 파충류인지 식별할 수 있을 것 같다.그래서 나는 한 페이지를 잡을 때마다 무작위로 몇 초 쉬게 하고 이 코드를 넣으면 매 시간대마다 대량의 주식 데이터를 얻을 수 있다.
4.프록시 IP 사용
하늘에 뜻밖의 바람이 불어 프로그램이 회사에서 순조롭게 테스트에 성공했고 침실로 돌아온 후 몇 페이지만 캡처할 수 있다는 것을 발견하고 서버에 의해 막혔다.당황한 나는 서둘러 도모에게 물어봤다. 서버가 당신의 IP를 식별하고 이 IP에 접근한 횟수를 기록할 수 있다는 것을 알게 되었다. 은닉된 프록시 IP를 사용할 수 있고 잡는 과정에서 끊임없이 바뀌어 서버가 누가 진범인지 찾을 수 없게 되었다.이 공은 아직 완성되지 않았으니 뒷일이 어떠한지 알고 싶으면 다음 회에 설명해 주십시오.
5.기타 반파충류의 제한을 돌파하는 방법
많은 서버들이 브라우저 요청을 받을 때 쿠키 파일을 브라우저에 보내고 쿠키를 통해 당신의 접근 과정을 추적합니다. 서버가 당신이 파충류라는 것을 식별하지 못하도록 쿠키를 가지고 데이터를 찾는 것이 좋습니다.만약에 모의 로그인을 해야 하는 사이트를 만나면 자신의 계정이 해킹되지 않도록 대량의 계정을 신청한 후에 다시 로그인할 수 있다. 이곳은 모의 로그인, 인증 코드 식별 등 지식과 관련되어 당분간 깊이 연구하지 않을 것이다.한 마디로 하면 사이트 주인에게 어떤 파충류는 정말 얄밉기 때문에 파충류의 진입을 제한하는 방법을 많이 생각해 낼 수 있다. 그래서 우리는 강제로 들어간 후에도 예의를 지켜야 한다. 남의 사이트를 무너뜨리지 마라.
로그인을 통해 알 수 있는 코드 예:
#encoding:utf8
import requests
from lxml import etree
import re
dai = ['175.155.25.20:808'] # ip
head = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0"} #
cookie = {'Cookie':'q_c1=42980743158c4aab9d8111f90172ec69|1490747011000|1490747011000; r_cap_id="ZTIxNTU3YWE3NjNmNDY1YmI1NDc2ZTFkZWM4ZWYyNDI=|1493277797|377fb0c22c8ac4f0dd192742d2c7e74f876f4b1b"; cap_id="ZjIwM2NlYTJhOWNiNDIxZjg0NDBkYzEyNTZlZTk3ZWM=|1493277797|cc27229fb1908723c6a19c8acc8f83fc181770a4"; capsion_ticket="2|1:0|10:1492830337|14:capsion_ticket|44:MjJiMTFmNjNlZTVlNDdmMjk3YzAxNjZmMzkwMjkyYmQ=|cfc0184334508f233cda25a1549f9ab8ff3abd2bcde0eb00d57d561b3d37da71"; aliyungf_tc=AQAAAKV5ZgOXbQsAAtD5cpIi0/Ex8fux; acw_tc=AQAAAOfo2CFxJQ0AAtD5cms3yXOcEGH+; _xsrf=aec21e958db4d4c03ed5ba3245ce3eca; d_c0="AJACY2OmqwuPTikw3aZFLtfreGDGHsZiGRw=|1493277794"; l_n_c=1; __utma=51854390.267103839.1493278142.1493278142.1493278142.1; __utmb=51854390.0.10.1493278142; __utmc=51854390; __utmz=51854390.1493278142.1.1.utmcsr=zhihu.com|utmccn=(referral)|utmcmd=referral|utmcct=/; __utmv=51854390.000--|3=entry_date=20170329=1; _zap=dbcdd0ce-8192-4652-a8b0-dc163795627b; z_c0=Mi4wQUNBQ2R4Umlxd3NBa0FKalk2YXJDeGNBQUFCaEFsVk45Q2twV1FEMmF2aVlHeFpSNlE4bE15YnFyU2xfT0Z2cE1R|1493277941|74ef22a4df0a689b9eb43adcba977aebd9d165e5'}
te = requests.get('https://www.zhihu.com/#signin',cookies=cookie,headers=head,proxies=dai).text
demo = re.compile('(.*?)',re.S)
aa = demo.findall(te)
print(aa)
다음으로 전송:https://www.cnblogs.com/GUIDAO/p/6780345.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.