python 은 세 가지 무 작위 요청 헤더 방식 을 실현 합 니 다.

파충류 에 요청 헤드user-agent라 는 인 자 를 설정 해 보 셨 을 거 라 고 믿 죠?요청 할 때 이 인 자 를 넣 으 면 어느 정도 브 라 우 저 로 위장 할 수 있 고 서버 에 의 해 직접 식별 되 지 않 습 니 다spider.demo.code.제 가 알 기 로 는 많은 독자 들 이 매번network에서 직접 복사user-agent한 다음 에 그 를 코드 에 붙 여 넣 었 습 니 다.이렇게 얻 은user-agent은 틀 리 지 않 고 사용 할 수 있 습 니 다.그러나 만약 에 사이트 의 역 기어 오 르 기 조치 가 강하 면 고정된 요청 헤드 를 사용 하 는 데 문제 가 있 을 수 있 기 때문에 우 리 는 랜 덤 요청 헤드 를 설정 해 야 한다.여기 서 나 는 내 가 일반적으로 사용 하 는 세 가지 랜 덤 요청 헤드 방식 을 공유 했다.
아이디어 소개:
사실은 랜 덤 효 과 를 얻 으 려 면 어느 정도 에 우 리 는 랜 덤 함수 라 이브 러 리random라 는 것 을 이용 하여 실현 할 수 있 고random.choice([user-agent])랜 덤 pick 배열 중 하 나 를 호출 하면 된다.이것 은 나의 방식 이다.
python 은 제3자 가방 을 많이 가 진 언어 로 서 무 작위 요청 헤드 를 생 성 할 수 있 는 가방 이 있 습 니 다.맞습니다.바로fake-useragent이 제3자 라 이브 러 리 입 니 다.잠시 후에 이 함수 라 이브 러 리 의 간단 한 사용 을 소개 하 겠 습 니 다.
다른 사람 이 제3자 라 이브 러 리 를 쓸 수 있 으 니 자 연 스 럽 게 자신 도 이러한 기능 을 실현 할 수 있 습 니 다.대부분 상황 에서 저 는 많은 코드 가 제 가 실현 한GetUserAgentCS류 를 직접 호출 하여 무 작위 요청 헤드 를 얻 을 수 있 습 니 다.함수 라 이브 러 리 를 직접 써 야 편안 합 니 다.이것 은 저도 함수 라 이브 러 리 를 어떻게 만 드 는 지 소개 하 겠 습 니 다.
제3자 라 이브 러 리 작성 하기:
코드 를 쓰 는 프레임 워 크 가 어떤 지,과정 을 향 한 것 인지,대상 을 향 한 것 인지 모 르 겠 습 니 다.일회 성 코드 에 대해 서 는 간단 한 인 코딩 을 하면 됩 니 다.이 코드 는 여러 곳 에서 사용 할 수 있 고 중복 사용 할 수 있다 고 생각 되면 클래스 방식 으로 이 코드 를 작성 할 수 있 습 니 다.다른 파일 에 서 는 이 파일 을 직접 호출 하여 쓴 class 클래스 의 여러 가지 방법 을 직접 호출 할 수 있 습 니 다.그리고 저도 이렇게 실 현 된 랜 덤 요청 헤더 의 제3자 라 이브 러 리 입 니 다.다음 과 같 습 니 다.

import random
import csv
class GetUserAgentCS(object):
  """
           ,      
  """

  def __init__(self):
    with open('D://pyth//scrapy   //setting//useragent.csv', 'r') as fr:
      fr_csv = csv.reader(fr)
      self.user_agent = [str(i[1]) for i in fr_csv]

  def get_user(self):
    return random.choice(self.user_agent)
useragent 파일 은 다음 과 같 습 니 다.

1,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"
2,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36"
3,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (X11; NetBSD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"
4,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"
5,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"
-------
------- # too much 
100...
코드 는 간단 합 니 다.로 컬 csv 파일 을 읽 고 random 이 하나씩 나 가면 됩 니 다.그럼 지금 누가 저 에 게 이 파일 을 어떻게 왔 냐 고 물 었 습 니 다.간단 합 니 다.자 연 스 럽 게 방법 이 있 습 니 다.이 따 다음 모듈 에서 말씀 드 리 겠 습 니 다.여기 서 우 리 는 하나의GetUserAgentCS류 만 작성 하면 됩 니 다.코드 는 제 위 에 있 는 것 을 직접 베 낄 수 있 습 니 다.그리고get_useragent.py로 저장 하면 됩 니 다.그리고 이 가방 파일 을 파충류 폴 더 에 두 고 이렇게 호출 하 십시오.

from get_useragent import GetUserAgentCS
headers = {}
ua = GetUserAgentCS().get_user()
headers['user-agent'] = ua
return headers
이 호출GetUserAgentCS에 성공 하지 못 하거나 아래 에 빨간색 물결 선 이 나타 날 수 있 습 니 다.현재 작업 환경 을 설정 하지 않 았 다 면 이렇게 설정 해 야 합 니 다(파충류 폴 더 설정).
在这里插入图片描述
클릭Sources Root하 시 면 됩 니 다!
제3자 라 이브 러 리 fake-useragent 사용:
이것 은 다른 사람 이 이미 작성 한 제3자 라 이브 러 리 입 니 다.설치 한 다음 에 API 를 호출 하면 됩 니 다.여러 가지 요청 헤드 를 얻 을 수 있 습 니 다.유일한 단점 은 요청 이 불안정 하고 가끔 네트워크 파동 이 성공 하지 못 할 수도 있 습 니 다.Scrapy 에 사용 하면 편안 하지 않 습 니 다.그래서 저 는 이 가방 을 바탕 으로 제 가방 과 같이 작 성 했 습 니 다.요청 헤더 의 데이터 가 어떻게 생 겼 는 지 에 대해 서 는 이 가방 이 정상적으로 실 행 될 때 계속 변경user-agent한 다음 에 계속 요청http://httpbin.org/user-agent한 다음 에 데 이 터 를 계속 저장 하고 로 컬 파일 에 기록 하면 됩 니 다.
우리 이 가방 의 사용 방식 을 이야기 합 시다!
설치 하 다.

pip install fake-useragent
설치 성공 여 부 를 pip list 로 확인 할 수 있 습 니 다.
사용 방식

from fake_useragent import UserAgent
headers= {'User-Agent':str(UserAgent().random)}
r = requests.get(url, headers=headers)
  • UserAgent().random 은 임의의 브 라 우 저의 요청 헤더
  • 를 가 져 올 수 있 습 니 다.
  • UserAgent().chrome 은 구 글 브 라 우 저의 요청 헤더
  • 를 가 져 올 수 있 습 니 다.
  • UserAgent().fireforx 는 불 여우 브 라 우 저의 요청 헤더
  • 를 가 져 올 수 있 습 니 다.
    이 럴 때 는 그냥 랜 덤 으로 하면 돼 요.간단 해 요.
    메모리 배열 읽 기:
    이 럴 때 부터 내 가 부탁 머리 를 바 꿨 을 뿐 인 데 이렇게 귀 찮 게 해 야 하나?물론 간단 한 방법 이 있 습 니 다.다만 매번 복사 해서 사용 해 야 합 니 다.방법 이 별로 없습니다.구체 적 으로 다음 과 같 습 니 다.
    
    ua = ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36"
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (X11; NetBSD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"]
    미리 요청 헤드 를 배열 에 넣 고 사용 하면 됩 니 다.
    
    import random
    ua = [.....]
    r = requests.get(url, headers={"user-agent":random.choice(ua)})
    이상 은 제 가 요청 헤드 에 관 한 몇 가지 설정 방식 입 니 다.보충 할 것 이 있 으 면 댓 글 을 남 겨 주세요.
    세 가지 방식 으로 랜 덤 요청 헤드 를 설정 하 는 것 을 알려 드 립 니 다.파충류 설정 요청 헤드(user-agent)는 필연 적 입 니 다.랜 덤 요청 헤드 를 만 드 는 방법 도 우리 파충류 가 반드시 파악 해 야 할 것 입 니 다.이 글 을 읽 으 면 쉽게 파악 할 수 있 습 니 다!
    python 이 세 가지 랜 덤 요청 헤드 방식 을 실현 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 python 랜 덤 요청 헤드 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기