Scrapy에 프록시 연결하기
Scrapy는 많은 페이지를 모으는 크롤러를 만드는 Python 도구예요. 요청의 meta 값에 proxy를 넣으면 요청마다 ProxySup를 거쳐요.
최종 수정
Scrapy 연결에 필요한 것
| 게이트웨이 | gate.proxysup.com:7777 |
|---|---|
| 사용자 이름 | user-country-국가코드 형식 |
| 비밀번호 | 계정의 접속 토큰 |
Scrapy 설치
pip install scrapyScrapy 기본 연결 예시
import scrapy
class PriceSpider(scrapy.Spider):
name = "price"
start_urls = ["https://ipinfo.io/json"]
custom_settings = {"CONCURRENT_REQUESTS_PER_DOMAIN": 4}
def start_requests(self):
for url in self.start_urls:
yield scrapy.Request(url, meta={
"proxy": "http://user-country-de:[email protected]:7777"
})
def parse(self, response):
yield {"body": response.text}Scrapy 고정 세션 쓰기
meta={"proxy": "http://user-country-de-session-a1b2:[email protected]:7777"}
# 로그인 뒤 여러 페이지를 이어서 볼 때 같은 세션 이름을 써요사용자 이름 규칙
| 값 | 하는 일 | 예시 |
|---|---|---|
country-국가코드 | 접속할 나라를 정해요 | country-jp |
city-도시이름 | 도시까지 정해요. 도시 지정이 되는 나라에서만 써요 | city-osaka |
session-이름 | 고정 세션을 켜요. 이름이 같으면 같은 IP를 받아요 | session-a1b2 |
type-mobile 또는 type-dc | 모바일이나 데이터센터 프록시로 바꿔요. 없으면 주거용이에요 | type-mobile |
Scrapy 연결 오류 해결
407 오류가 나와요
사용자 이름이나 토큰이 틀렸다는 뜻이에요. 토큰 앞뒤에 빈칸이 들어가지 않았는지, 사용자 이름이 user-로 시작하는지 확인해요.
연결 시간이 초과돼요
timeout 값을 30초 정도로 늘리고, 같은 사이트에 보내는 동시 요청 수를 줄여요.
같은 IP가 유지되지 않아요
사용자 이름에 session 값이 있는지 확인해요. 고정 세션은 최대 30분까지 유지돼요.
원하는 도시가 안 잡혀요
도시 지정이 되는 나라인지 지원 국가 페이지에서 확인하고, 도시 이름을 영문 소문자와 밑줄로 넣어요.