Question telecharger la cible d'une redirection

Plus d'informations
il y a 14 ans 9 mois #9816 par Gerne cyril
bonjour a tous!
mon problème est quelque peu difficile à présenter alors soyez indulgent svp!:P

je suis entrain de coder un script permettant de télécharger automatiquement la dernière version de java proposée sur le site officiel
j'en suis là:

[code:1]$nom =[Environment]::UserName

# site de téléchargement de java
$urldownload = \"www.java.com/fr/download/windows_xpi.jsp?locale=fr\";

# on télécharge le contenu de la page en string puis après avoir \"splité\" aux bons endroits on peux récupérer l'url qui redirige vers le téléchargement
# je procède ainsi car le site questionne le client sur sa config, OS, la version installée... et propose la bonne version en fonction de ces infos
# je stocke l'url recherchée dans $url
$WebClient = New-Object System.Net.WebClient
$Results = $WebClient.DownloadString($urldownload)
$T = @($Results.split('\"'))
$regex =\"^http://javadl.sun.com/webapps/download/AutoDL\?BundleId=(\d{1,6})$\"

foreach($myvar in $T)
{
if ($myvar -match $regex -eq $true)
{
$url = $myvar
}
}


# navigation sur la page qui ouvre la fenêtre de téléchargement de la bonne version
(New-Object -Com Shell.Application).Open(\"$url\"«»)[/code:1]

Mon soucis ce trouve là: je me contente d'une navigation et non d'un téléchargement à partir de la console; je ne peux pas utiliser de méthode \".download\" car mon url ne cible pas directement le fichier voulu (voir $regex dans mon code), l'url interroge surement un serveur et me redirige sur une autre page (dont l'url n'a rien a voir)qui ouvre une fenêtre me proposant de lancer le téléchargement ce qui nécessite un clic de souris

je veux automatiser cette action...
j'espère avoir été suffisamment explicite
avez-vous si il vous plait une piste ou un tuyau?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 8 mois #9862 par Matthew BETTON
Bonjour,

Un tuyau :

[code:1]$WebClient = New-Object System.Net.WebClient
try{
$WebClient.DownloadFile($DLUrl, $LocalFile)
}
catch{
Write-Error \"An error has occured while downloading '$DLUrl' : $($_.exception.Message)\"
}
finally{
$WebClient.Dispose()
}[/code:1]

... où '$DlUrl' correspond à une URL de téléchargement et '$LocalFile' le chemin local complet du fichier téléchargé.

Plus d'informations sur la classe WebClient ici .<br><br>Message édité par: Matthew BETTON, à: 2/07/11 15:33

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 8 mois #9863 par Matthew BETTON
Je viens de faire le test et cela fonctionne (pas de souci de redirection, le fichier est bien récupéré) :

[code:1]Function Download([String]$DLUrl, [String]$LocalFile){

try{
$WebClient.DownloadFile($DLUrl, $LocalFile)
}
catch{
Write-Error \&quot;An error has occured while downloading '$DLUrl' : $($_.exception.Message)\&quot;
}
}

$urldownload = \&quot;www.java.com/fr/download/windows_xpi.jsp?locale=fr\";

$WebClient = New-Object System.Net.WebClient
$Results = $WebClient.DownloadString($urldownload)
$T = @($Results.split('\&quot;'))
$regex =\&quot;^http://javadl.sun.com/webapps/download/AutoDL\?BundleId=(\d{1,6})$\&quot;

foreach($myvar in $T)
{
if ($myvar -match $regex -eq $true)
{
Download $myvar \&quot;d:\jspiinstall.exe\&quot;
}
}

$WebClient.Dispose()[/code:1]<br><br>Message édité par: Matthew BETTON, à: 2/07/11 15:30

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.038 secondes
Propulsé par Kunena