curl을 사용하여 Alexa 청중 지리를 얻는 방법은 무엇입니까?

user2915507

Alexa 보고서에서 상위 3 개 국가를 가져 오려고하는데을 사용하여 사이트에 액세스 할 수 없습니다 curl. 하지만 그렇게 할 때 Alexa에서 Amazon에 가입하라는 오류가 표시됩니다. 나는 curl차단할 수 없다는 것을 알고 있지만 그들은 그것을 한 것 같습니다.

$url="http://www.alexa.com/siteinfo/google.com";
$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$url);
$result=curl_exec($ch);
echo('<textarea>'.$result.'</textarea>');
자코모 1968

작동합니다. 참고 사용하고 싶은 표준 컬 옵션 세트를 사용했습니다. 실제 필요에 따라 자유롭게 조정하십시오. 내가 그렇게 한 이유는 설정하는 동안 $agent실제로 curl어떤 식 으로든 전달하지 않기 때문 입니다. 그래서 내 옵션 CURLOPT_USERAGENT은 몇 가지 다른 것뿐만 아니라 올바르게 설정 됩니다.

$url ="http://www.alexa.com/siteinfo/google.com";
$agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
$result = curl_exec($ch);
curl_close($ch);
echo('<textarea>'.$result.'</textarea>');

그리고 다음은 Macintosh에서 MAMP를 통해 PHP 5.4를 사용하는 로컬 테스트 환경의 결과입니다.

여기에 이미지 설명 입력

EDIT: According to the original poster, this script works on one host but not another where he is met with a “403: Forbidden” error. Which points to some kind of blocking happening on the Alexa server. I would recommend debugging by using curl -I from the command line like this:

curl -I http://www.alexa.com/siteinfo/google.com

And on my local Mac OS X 10.9.4 setup, I get this in response to the request:

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Date: Thu, 10 Jul 2014 01:24:51 GMT
Server: Apache
Set-Cookie: rpt=%21; expires=Fri, 11-Jul-2014 02:24:51 GMT; domain=alexa.com
Set-Cookie: lv=1404955491; expires=Fri, 10-Jul-2015 07:24:51 GMT; path=/; domain=alexa.com
Vary: Accept-Encoding
X-Frame-Options: SAMEORIGIN
Connection: keep-alive

The HTTP/1.1 200 OK means all is good. If you run the same command from the command line & get anything other than that, you can bet you are being blocked. Possibly a block based just on an IP range. Or even blocked via something like ModSecurity which would do heuristic analysis of traffic to catch & block non-standard web requests. Regardless, if you are being blocked on the server side of this, there is not much you can do to unblock yourself.

즉, $agent내 버전의 스크립트에서 어떻게 올바르게 설정했는지 확인 했지만 그렇지 않습니까? curlIP를 테스트하는 동안 적절한 사용자 에이전트없이 너무 많은 요청 을 실행 한 것은 테스트에서 일시적으로 차단 될 수 있습니다. 따라서 하루나 이틀을 기다렸다가 다시 시도하지만 내 버전의 스크립트로 적절한 사용자 에이전트가 설정됩니다. 그러면 잘 작동 할 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

curl을 사용하여 이미지를 얻는 방법은 무엇입니까?

분류에서Dev

x509 공개 키를 사용하여 서명 / 해시 된 Alexa 요청 본문을 확인하는 방법은 무엇입니까?

분류에서Dev

http 요청을 통과 한 후 python 다중 처리를 사용하여 전역 합계를 얻는 방법은 무엇입니까?

분류에서Dev

jQuery를 사용하여 여러 <td>에서 <td> 중 하나의 값을 얻는 방법은 무엇입니까?

분류에서Dev

Stripe를 사용하여 구독을 생성 한 후 청구 ID를 얻는 방법은 무엇입니까?

분류에서Dev

Apache httpd API (request_rec)를 사용하여 전체 HTTP 요청 URL을 얻는 방법은 무엇입니까?

분류에서Dev

Bitbucket API를 사용하여 모든 풀 요청을 얻는 방법은 무엇입니까?

분류에서Dev

Slim을 사용하여 요청 후 데이터를 얻는 방법은 무엇입니까?

분류에서Dev

파이썬 요청을 사용하여 특정 링크를 얻는 방법은 무엇입니까?

분류에서Dev

httptools를 사용하여 요청에서 본문을 얻는 방법은 무엇입니까?

분류에서Dev

underscorejs를 사용하여 중첩 된 객체의 내부 배열을 얻는 방법은 무엇입니까?

분류에서Dev

nodejs의 중복 요청을 방지하는 방법은 무엇입니까?

분류에서Dev

AddressSanitizer 사용을 중지하는 방법은 무엇입니까?

분류에서Dev

여러 대괄호를 사용하지 않고 문자열을 사용하여 객체 내에서 중첩 값을 얻는 방법은 무엇입니까?

분류에서Dev

Scrapy : 302의 경우 요청을 중지하는 방법은 무엇입니까?

분류에서Dev

Node.js를 사용하여 잘못된 POST 요청을 처리하는 방법은 무엇입니까?

분류에서Dev

Slim Framework를 사용하여 PHP에서 jsonp 요청을 처리하는 방법은 무엇입니까?

분류에서Dev

PowerShell을 사용하여 XML 요소를 얻는 방법은 무엇입니까?

분류에서Dev

LINQ를 사용하여 NOT Equal 기능을 얻는 방법은 무엇입니까?

분류에서Dev

PHP를 사용하여 jquery ID 값을 얻는 방법은 무엇입니까?

분류에서Dev

PublicDnsName을 사용하여 InstanceID를 얻는 방법은 무엇입니까?

분류에서Dev

Bootstrap을 사용하여 여러 이미지를 중앙에 배치하는 방법은 무엇입니까?

분류에서Dev

Javascript를 사용하여 애니메이션을 중지하고 시작하는 방법은 무엇입니까?

분류에서Dev

상태에서 멀어 질 때 http 요청을 중지하거나 http 요청 결과 처리를 중지하는 방법은 무엇입니까?

분류에서Dev

JavaScript를 사용하여 캔버스 끝을 칠 때 개체를 중지하는 방법은 무엇입니까?

분류에서Dev

(pandas를 사용하지 않고) matplotlib를 사용하여 중첩 사전을 그리는 방법은 무엇입니까?

분류에서Dev

simpleXML을 사용하여 트리를 중첩 배열로 구문 분석하는 방법은 무엇입니까?

분류에서Dev

다중 처리를 사용하여 Theano 기능을 병렬화하는 방법은 무엇입니까?

분류에서Dev

SQL 쿼리를 사용하여 MySQL에서 중복 행을 삭제하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    curl을 사용하여 이미지를 얻는 방법은 무엇입니까?

  2. 2

    x509 공개 키를 사용하여 서명 / 해시 된 Alexa 요청 본문을 확인하는 방법은 무엇입니까?

  3. 3

    http 요청을 통과 한 후 python 다중 처리를 사용하여 전역 합계를 얻는 방법은 무엇입니까?

  4. 4

    jQuery를 사용하여 여러 <td>에서 <td> 중 하나의 값을 얻는 방법은 무엇입니까?

  5. 5

    Stripe를 사용하여 구독을 생성 한 후 청구 ID를 얻는 방법은 무엇입니까?

  6. 6

    Apache httpd API (request_rec)를 사용하여 전체 HTTP 요청 URL을 얻는 방법은 무엇입니까?

  7. 7

    Bitbucket API를 사용하여 모든 풀 요청을 얻는 방법은 무엇입니까?

  8. 8

    Slim을 사용하여 요청 후 데이터를 얻는 방법은 무엇입니까?

  9. 9

    파이썬 요청을 사용하여 특정 링크를 얻는 방법은 무엇입니까?

  10. 10

    httptools를 사용하여 요청에서 본문을 얻는 방법은 무엇입니까?

  11. 11

    underscorejs를 사용하여 중첩 된 객체의 내부 배열을 얻는 방법은 무엇입니까?

  12. 12

    nodejs의 중복 요청을 방지하는 방법은 무엇입니까?

  13. 13

    AddressSanitizer 사용을 중지하는 방법은 무엇입니까?

  14. 14

    여러 대괄호를 사용하지 않고 문자열을 사용하여 객체 내에서 중첩 값을 얻는 방법은 무엇입니까?

  15. 15

    Scrapy : 302의 경우 요청을 중지하는 방법은 무엇입니까?

  16. 16

    Node.js를 사용하여 잘못된 POST 요청을 처리하는 방법은 무엇입니까?

  17. 17

    Slim Framework를 사용하여 PHP에서 jsonp 요청을 처리하는 방법은 무엇입니까?

  18. 18

    PowerShell을 사용하여 XML 요소를 얻는 방법은 무엇입니까?

  19. 19

    LINQ를 사용하여 NOT Equal 기능을 얻는 방법은 무엇입니까?

  20. 20

    PHP를 사용하여 jquery ID 값을 얻는 방법은 무엇입니까?

  21. 21

    PublicDnsName을 사용하여 InstanceID를 얻는 방법은 무엇입니까?

  22. 22

    Bootstrap을 사용하여 여러 이미지를 중앙에 배치하는 방법은 무엇입니까?

  23. 23

    Javascript를 사용하여 애니메이션을 중지하고 시작하는 방법은 무엇입니까?

  24. 24

    상태에서 멀어 질 때 http 요청을 중지하거나 http 요청 결과 처리를 중지하는 방법은 무엇입니까?

  25. 25

    JavaScript를 사용하여 캔버스 끝을 칠 때 개체를 중지하는 방법은 무엇입니까?

  26. 26

    (pandas를 사용하지 않고) matplotlib를 사용하여 중첩 사전을 그리는 방법은 무엇입니까?

  27. 27

    simpleXML을 사용하여 트리를 중첩 배열로 구문 분석하는 방법은 무엇입니까?

  28. 28

    다중 처리를 사용하여 Theano 기능을 병렬화하는 방법은 무엇입니까?

  29. 29

    SQL 쿼리를 사용하여 MySQL에서 중복 행을 삭제하는 방법은 무엇입니까?

뜨겁다태그

보관