2013-12-08 7 views
0

www.example.com과 같은 특정 URL을 사용하여 예를 들어 apple touch icon을 추출하고 싶습니다. 이 속성에 대한 DOM을 검색 :모바일 웹 사이트의 apple-touch-icon을 구문 분석하십시오.

<link rel="apple-touch-icon" href="touch-icon-iphone.png"> 

문제점은 example.com 그냥 모바일 m.example.com 웹 사이트, 정상적인 웹 사이트에이 태그를 제공하지 않습니다. 나는 그들이 서버 측 장치 탐지를 사용하고 모바일 장치에서만이 태그를 추가한다고 생각한다. 그런 웹 사이트에서이 아이콘을 어떻게 얻을 수 있는지에 대한 아이디어가 있습니까? m.example.com 모바일 버전을 example.com 경우

+1

서버 측 리다이렉션은 아마도 'User-Agent' HTTP 헤더를 사용하여 iOS를 감지하고 모바일 사이트 응답으로 전달합니다. 프런트 엔드에서이 작업을 수행하면 서버 측 리디렉션이 설정되지 않습니다 보안상의 이유로 XHR을 통한 특정 헤더. 백엔드에 프록시 서비스를 설정하여'User-Agent' 헤더를 설정하고 요청을 작성한 다음 JS 함수로 리턴해야합니다. – Barney

답변

1

, 그들은 User Agent sniffing를 사용 아마 리디렉션 휴대 전화 사용자입니다.

웹 사이트의 서버는 기본적으로 요청의 User-Agent HTTP 헤더를보고 모바일 브라우저를 탐지하는 값 집합과 일치시킵니다. 여기가 아파치에서 수행하는 방법의 예입니다

RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC] 
RewriteCond %{HTTP_USER_AGENT} (.*)iPhone(.*) [NC,OR] 
RewriteRule^http://m.example.com [L,QSA] 

좋은 소식은 당신이 헤더를 직접 설정하여 m.example.com를 제공에 서버를 속일 수있다. 여기에 곱슬 예입니다

curl facebook.com 

curl facebook.com -L -A "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5" 

첫 번째는 facebook.com에 대한 HTML을 검색합니다, 두 번째는 아이폰의 값으로 사용자 에이전트 헤더를 설정합니다. curl이 facebook.com에서 m.facebook.com으로의 리디렉션을 따르려면 -L 옵션을 사용해야합니다.