채택완료

php 파싱 질문드립니다

2017-11-02 (목) 12:58:19 2,568

https://www.amazon.com 사이트를 파싱해서 값을 가져올려고하니 봇으로 인식하여 캡차화면을 뛰우네요..curl 이나 simple_html_dom 해도 마찬가집니다.. 방법이없을까요 ㅠㅠ

|

답변 2개 / 댓글 2개

채택된 답변
+20 포인트
2017-11-02 (목) 13:49:51
Copy
<?php

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://www.amazon.com/");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$headers = [
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Encoding: gzip, deflate',
    'Accept-Language: en-US,en;q=0.5',
    'Cache-Control: no-cache',
    'Content-Type: application/x-www-form-urlencoded; charset=utf-8',
    'Host: www.amazon.com',
    'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Mobile Safari/537.36',
];

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$server_output = curl_exec ($ch);

curl_close ($ch);

print  $server_output ;

이렇게 하시면 캡차는 안뜰거에요.. 근데 SSL때문인지 내용이 깨져 나옵니다. 이 부분은

 http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/

이 링크를 보시고 잘 해결하시길 바래요

답변에 대한 댓글 2개

답변 감사합니다~! 근대 curl로 원하는 클래스가 아이디값으로 접근을해서 값을 가져오지못하나요?
그건 CURL로 로그인요청을 보내셔서 로그인 완료된 세션id를 받아오신 후에 그 세션id를 넣고 접근하시면 됩니다

proxy를 사용하면 가능하긴 한데 proxy도 시간이 좀 지나면 차단되더라고요 ^^;;

적은 양을 하시는거라면 proxy를 시간대별로 바꾸도록 하시면 가능할수도 있습니다.

답변을 작성하려면 로그인이 필요합니다.