PHP 구현 이미지 도 난 방지 체인 해체 작업 예제[이미지 도 난 방지 체인 문제 해결/역방향 대리]

본 논문 의 사례 는 PHP 가 이미지 도 난 방지 체인 의 해체 작업 을 실현 하 는 것 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
많은 동료 들 의 블 로그,사 이 트 는 모두 도상 으로 이 루어 진다.그러면 현재 많은 안정 적 인 도상 인 터 페 이 스 는 모두 도 난 방지 체인 으로 처리 되 었 다.예 를 들 어 바 이 두,알 리,경 동,샤 오미,개 수색 등 이다.
그래서 우 리 는 어떻게 도 난 방지 체인 을 피하 고 그림 을 직접 사용 해 야 합 니까?
1 도 난 방지 의 원 리 는 무엇 입 니까?
클 라 이언 트(브 라 우 저)가 서버 에 요청 한 내용 이 있 을 때 header 를 제출 합 니 다.이 header 에는 브 라 우 저 정보,쿠키 등 내용 이 포함 되 어 있 습 니 다.그러면 referer 라 는 동쪽 도 여기에 포함 되 어 있 습 니 다.
레 퍼 는 뭐 하 는 거 예요?
이것 은 서버 에 이 요청 의 출처 가 누구 인지 알려 주 는 것 입 니 다.예 를 들 어 페이지 A 에서 페이지 B 로 넘 어가 면 페이지 B 가 받 은 referer 는 페이지 A 입 니 다.
그러나 그림 에 있어 서 는 이것 과 조금 다 릅 니 다.그림 은 html 페이지 로 딩 이 끝 난 후에 불 러 옵 니 다.그래서 그림 이 받 은 referer 는 웹 페이지 의 이전 페이지 가 아니 라 현재 페이지 입 니 다.
이렇게 많아
그렇다면 현재 많은 사 이 트 는 어떻게 referer 를 이용 하여 이미지 도 난 을 방지 합 니까?
세 가지 경우 그림 참조 허용:
본 사이트referer 정보 가 없 는 경우.서버 는 브 라 우 저 에서 직접 방문 한 그림 URL 이 라 고 생각 하기 때문에 이 경우 정상적으로 접근 할 수 있 습 니 다)화이트 리스트 사이트 주소도 난 방지 체인 처 리 를 시작 하 다.
1.서버 가 필요 합 니 다.
2.코드 사용 php

<?php
 class ImgBridge{
  private $water='';
  private $imgUrl=''; 
  private $referer='';
  private $ua='MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1';
  private $imgCode='';
  private $imgHeader='';
  private $imgBody='';
  private $imgType='';

  public function \_\_construct($config=array()){
    foreach($config as $key=>$value){
      $this->$key=$value;
    }
  }
  
  public function getImg($imgUrl){
    $this->imgUrl=$imgUrl;
    /\*\*   url \*/
    if(substr($this->imgUrl,0,7)!=='http://' && substr($this->imgUrl,0,8)!=='https://'){
      $this->imgUrl='http://'.$this->imgUrl;
    }
    /\*\*   url  host \*/
    $url\_array=parse\_url($this->imgUrl);
    /\*\*   referer \*/
    $this->referer=$this->referer==""?'http://'.$url\_array\['host'\]:$this->referer;
    /\*\*     \*/
    $this->urlOpen();
    $this->imgBody;
    /\*\*     \*/
    if($this->imgCode!=200){
      $this->error(1);
      exit();
    }
    
    /\*\*       \*/
    preg\_match("/Content-Type: image\\/(.+?)\
/sim",$this->imgHeader,$result); /\*\* \*/ if(!isset($result\[1\])){ $this->error(2); exit(); }else{ $this->imgType=$result\[1\]; } /\*\* \*/ $this->out(); } private function out(){ /\*\* gif , \*/ if($this->imgType=='gif'){ header("Content-Type: image/gif"); echo $this->imgBody; exit(); } header("Content-Type: image/png"); /\*\* , \*/ $im=imagecreatefromstring($this->imgBody); $white = imagecolorallocate($im, 255, 255, 255); /\* \*/ if($this->water){ imagettftext($im, 12, 0, 20, 20, $white, "/fonts/hwxh.ttf", $this->water); } imagepng($im); } private function error($err){ header("Content-Type: image/jpeg"); $im=imagecreatefromstring(file\_get\_contents('./default.jpg')); imagejpeg($im); } private function urlOpen() { $ch = curl\_init(); curl\_setopt($ch, CURLOPT\_URL, $this->imgUrl); curl\_setopt($ch, CURLOPT\_USERAGENT, $this->ua); curl\_setopt ($ch,CURLOPT\_REFERER,$this->referer); curl\_setopt($ch, CURLOPT\_RETURNTRANSFER, 1); curl\_setopt($ch, CURLOPT\_HEADER, 1); /\*\* \*/ curl\_setopt($ch, CURLOPT\_FOLLOWLOCATION, true); /\*\* https \*/ $opt\[CURLOPT\_SSL\_VERIFYHOST\] = 2; $opt\[CURLOPT\_SSL\_VERIFYPEER\] = FALSE; curl\_setopt\_array($ch, $opt); $response = curl\_exec($ch); $this->imgCode=curl\_getinfo($ch, CURLINFO\_HTTP\_CODE) ; if ($this->imgCode == '200') { $headerSize = curl\_getinfo($ch, CURLINFO\_HEADER\_SIZE); $this->imgHeader = substr($response, 0, $headerSize); $this->imgBody = substr($response, $headerSize); return ; } curl\_close($ch); } } $img=new ImgBridge(array('water'=>'')); $img->getImg(strstr($\_SERVER\["QUERY\_STRING"\], "http"));
코드 이름 은 dl.php 입 니 다.
그러면 바로 방문 하 실 수 있 습 니 다.
http://도 메 인 이름/dl.php?url=도 난 방지 체인 이미지 주소
다음은 제 가 배치 한 역방향 대리 입 니 다.
http://www.likeyunba.com/2.php?url=
제 것 을 직접 쓰 지 마 세 요.제 것 은 오래 두 지 않 을 것 입 니 다.1-2 개 월 만 남 겨 두 고 체험 해 드 리 겠 습 니 다.
케이스
나 는 135 편집기 로 그림 을 한 장 올 려 그림 주 소 를 얻 었 다.
https://image.135editor.com/files/users/740/7407329/201912/zTeFAx8R_Cmea.jpg
역방향 대 리 를 더 해 도 난 방지 체인 처 리 를 해제 하 다.
http://www.likeyunba.com/2.php?url=https://image.135editor.com/files/users/740/7407329/201912/zTeFAx8R_Cmea.jpg
HTML 형식

더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기