Как из js получить url адрес?

123 4
S
На сайте с 13.11.2012
Offline
72
7168

Помогите, пожалуйста, если это вообще возможно, вытащить из js - url адрес.

Вот код скрипта

<script>
(function(d, s, h){
var p = ~location.protocol.indexOf(h)?'':h+':';
var m = d.getElementsByTagName(s)[0];
var n = d.createElement('script');n.src=p+'//glopart.ru/ads/adunit/1443/script.js';
m.parentNode.insertBefore(n,m);d.write('<div id="glopart-adunit-1443" data-glopart-adunit="1443"></div>');
})(document, 'script', 'http');
</script>

Из кода выше или сразу из glopart.ru/ads/adunit/1443/script.js

нужно получить значение url (ссылку) которое изменяется при каждом обновлении

Можно это сделать и как?

Спасибо!

Samail
На сайте с 10.05.2007
Offline
361
#1

Что с ним в итоге сделать нужно?

<script>

(function(d, s, h){
var p = ~location.protocol.indexOf(h)?'':h+':';
var m = d.getElementsByTagName(s)[0];
var n = d.createElement('script');n.src=p+'//glopart.ru/ads/adunit/1443/script.js';
m.parentNode.insertBefore(n,m);d.write('<div id="glopart-adunit-1443" data-glopart-adunit="1443"></div>');
ssilka = n.src;
})(document, 'script', 'http');
alert(ssilka);
</script>
S
На сайте с 13.11.2012
Offline
72
#2

Мне просто нужно получать разную ссылку при обращении к одной и той же странице, т.е. просто выдернуть ссылку, чтобы потом ее использовать в своем коде...

Выдернуть из js glopart.ru/ads/adunit/1443/script.js 'url' и вставить в свой html...php

Samail
На сайте с 10.05.2007
Offline
361
#3


<?php
$url = 'http://glopart.ru/ads/adunit/1443/script.js';
$content = file_get_contents($url);
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,$url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
$content = curl_exec($curl_handle);
curl_close($curl_handle);
$content = str_replace(array("\r","\n"),"",$content);
preg_match('@{(.*)}@si',$content,$content);
$cart = json_decode( $content[0], true );

echo 'wareUrl: '.$cart['wares']['0']['wareUrl'].'<br/>';
echo 'url: '.$cart['wares']['0']['url'].'<br/>';
echo 'image: '.$cart['wares']['0']['image'];
?>
S
На сайте с 13.11.2012
Offline
72
#4

Samail, большое спасибо!

S
На сайте с 30.09.2016
Offline
469
#5

..............

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
Samail
На сайте с 10.05.2007
Offline
361
#6

Строка там одна лишняя.

Должно быть так:

<?php 

$url = 'http://glopart.ru/ads/adunit/1443/script.js';
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,$url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
$content = curl_exec($curl_handle);
curl_close($curl_handle);
$content = str_replace(array("\r","\n"),"",$content);
preg_match('@{(.*)}@si',$content,$content);
$cart = json_decode( $content[0], true );

echo 'wareUrl: '.$cart['wares']['0']['wareUrl'].'<br/>';
echo 'url: '.$cart['wares']['0']['url'].'<br/>';
echo 'image: '.$cart['wares']['0']['image'];
?>

или так

<?php

$url = 'http://glopart.ru/ads/adunit/1443/script.js';
$content = file_get_contents($url);
$content = str_replace(array("\r","\n"),"",$content);
preg_match('@{(.*)}@si',$content,$content);
$cart = json_decode( $content[0], true );

echo 'wareUrl: '.$cart['wares']['0']['wareUrl'].'<br/>';
echo 'url: '.$cart['wares']['0']['url'].'<br/>';
echo 'image: '.$cart['wares']['0']['image'];
?>
S
На сайте с 13.11.2012
Offline
72
#7

Все варианты рабочие, взял самый короткий.

S
На сайте с 13.11.2012
Offline
72
#8

Как дописать скрипт таким образом, чтобы выводилось несколько данных, скажем 3.

Пример JS http://glopart.ru/ads/adunit/4031/script.js

отдает 3 url, image

В первом варианте JS отдавал 1 url, image

Помогите, пожалуйста.

W
На сайте с 09.04.2013
Offline
46
#9
Smirnof:
Как дописать скрипт таким образом, чтобы выводилось несколько данных, скажем 3.


$js=file_get_contents('http://glopart.ru/ads/adunit/4031/script.js');
if(preg_match('#GLOPART_ADS.push\((?<json>.*?)\)#',$js,$match)){
$wares=json_decode($match['json'])->wares;
foreach ($wares as $item) {
echo 'Title: '.$item->title.PHP_EOL;
echo 'Image: '.'http://glopart.ru/uploads/'.$item->image.PHP_EOL;
echo 'Url: '.$item->url.PHP_EOL;
echo PHP_EOL;
}
}
S
На сайте с 13.11.2012
Offline
72
#10

webjey, большое спасибо!

Работает :)

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий