Jump to content

This site uses cookies. By continuing to browse the site you are agreeing to our use of cookies. Find out more here. X
X


Photo

_EncodeUrl()


  • Please log in to reply
3 replies to this topic

#1 w0uter

w0uter

    resreveR nA

  • Active Members
  • PipPipPipPipPipPip
  • 2,262 posts

Posted 12 May 2005 - 02:11 PM

Works on IE.
But does not work on firefox due to security reasons. :(
firefox sends you to the root.
ex: www.google.nl/firefox?client=firefox-a&rls=org.mozilla:nl-NL:official
would just go to: www.google.nl

Function:
Func _EncodeUrl($s_Url, $s_PreFix = 'http://')     Local $s_NUrl = ''     $s_Url = StringSplit($s_Url, '')         For $i = 1 To $s_Url[0]         If $s_Url[$i] = '/' OR $s_Url[$i] = '?' OR $s_Url[$i] = '=' Then             $s_NUrl &= $s_Url[$i]             ContinueLoop         EndIf         $s_NUrl &= '%' & Hex(Asc($s_Url[$i]), 2)     Next         $s_NUrl = $s_PreFix & $s_NUrl         Return $s_NUrl     EndFunc


example:
$Coded = _EnCodeUrl('www.google.nl/firefox?client=firefox-a&rls=org.mozilla:nl-NL:official') ConsoleWrite($Coded & @CR) Run('C:\Program Files\Internet Explorer\iexplore.exe ' & $Coded)

My UDF's:;mem stuff_Mem;ftp stuff_FTP ( OLD );inet stuff_INetGetSource ( OLD )_INetGetImage _INetBrowse ( Collection )_EncodeUrl_NetStat_Google;random stuff_iPixelSearch_DiceRoll







#2 w0uter

w0uter

    resreveR nA

  • Active Members
  • PipPipPipPipPipPip
  • 2,262 posts

Posted 13 May 2005 - 08:27 PM

plz bash me for making a nub script. (or just give improvements)

since it looks even more noob if noone posts....
My UDF's:;mem stuff_Mem;ftp stuff_FTP ( OLD );inet stuff_INetGetSource ( OLD )_INetGetImage _INetBrowse ( Collection )_EncodeUrl_NetStat_Google;random stuff_iPixelSearch_DiceRoll

#3 1of10

1of10

    Seeker

  • Active Members
  • 14 posts

Posted 11 July 2005 - 09:48 AM

It's not so bad... In fact, even though it didn't work for me how it seems to have worked for you, it's still a valuable reference on how to convert to Hexadecimal values.

Incase you're curious about the results I got, here's the breakdown:
  • Copied Func and Example directly from Topic into new AU3 Script; clean-up after Copy — converted space-indents to tab-indents.
  • Commented out Run(), because I was only interested in the results, not the automatic launching of any program.
  • Commented out final assignment of $s_NUrl, because it's unnecessary — the same result can be acheived by moving the right side of the assignment to the Return line, then enclosing the assignment inside brackets so that it's evaluated before the Return.
  • Save, then Go!
  • Result: http://%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%61/%66%69%72%65%66%6F%78?‹...›
  • :evil: Theory: from CMD.EXE, did «START http://%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%61/%66%69%72%65%66%6F%78?‹...›
  • Since Mozilla Firefox is registered in my system as the default browser, Firefox attempted to load the URL.
  • Result: «404: No Such Domain (Privoxy v3.0.3)» It was attempting to load from «%77%77%77%2e%67%6f%6f%67%6c%65%2e%63%61» :)
Possibly the results I got could be different if I wasn't browsing through a proxy, but at least I now have an example of how to convert to Hexadecimal values. And that will come in very useful in the future.

:D Possible improvements I can think of right now would be:
  • Make the Func more intelligent, so that it only converts characters that would need to be converted, and only characters that appear after the page being requested. (I know the latter would be somewhat difficult considering some websites that pass parameters in the format of a path, such as server.com/path/file.ext/some+var/opt_05=y)
  • I noticed that, when I changed the host part back to unencoded text and left everything after the "/" still encoded, the page loaded as expected. I would recommend instead of specifying some fixed value for the browser in the Run() function, use «@ComSpec & " /C " & Chr(34) & "START " & $Coded & Chr(34)», or somehow call the Windows® ShellExecute to launch the URL. Either one would allow the Script to load the URL in the system's default browser, no matter what it may be.
Here's my slightly modified copy of the Func:
CODE

Func _EncodeUrl($s_Url, $s_PreFix = 'http://')
Local $s_NUrl = ''
$s_Url = StringSplit($s_Url, '')

For $i = 1 To $s_Url[0]
If $s_Url[$i] = '/' OR $s_Url[$i] = '?' OR $s_Url[$i] = '=' Then
$s_NUrl = $s_NUrl & $s_Url[$i]
ContinueLoop
EndIf
$s_NUrl = $s_NUrl & '%' & Hex(Asc($s_Url[$i]), 2)
Next

;$s_NUrl = $s_PreFix & $s_NUrl

;Return $s_NUrl
Return ($s_PreFix & $s_NUrl)
EndFunc


;http://%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%61/%66%69%72%65%66%6F%78?%63%6C%69%65%6E%74=%66%69%72%65%66%6F%78%2D%61%26%72%6C%73=%6F%72%67%2E%6D%6F%7A%69%6C%6C%61%3A%65%6E%2D%43%41%3A%6F%66%66%69%63%69%61%6C
;http://www.google.ca/%66%69%72%65%66%6F%78?%63%6C%69%65%6E%74=%66%69%72%65%66%6F%78%2D%61%26%72%6C%73=%6F%72%67%2E%6D%6F%7A%69%6C%6C%61%3A%65%6E%2D%43%41%3A%6F%66%66%69%63%69%61%6C

$Coded = _EnCodeUrl('www.google.ca/firefox?client=firefox-a&rls=org.mozilla:en-CA:official')
ConsoleWrite($Coded & @CRLF)
;Run('C:\Program Files\Internet Explorer\iexplore.exe ' & $Coded)

Edited by 1of10, 11 July 2005 - 09:49 AM.

style_emoticons/autoit/robot.gifOne of TenSecondary Adjunct of Unimatrix Z03


#4 Valik

Valik

    Former developer.

  • Active Members
  • PipPipPipPipPipPip
  • 18,879 posts

Posted 11 July 2005 - 02:33 PM

Since I'm feeling generous...
Plain Text         
#Region _WebComposeURL() ; =================================================================== ; _WebComposeURL($sURL, $sLogin = "", $sPass = "", $sParams = "") ; ; Builds a valid URL from the four component parts. ; Parameters: ;   $sURL - IN - The URL use. ;   $sLogin - IN/OPTIONAL - The login to send with the URL. ;   $sPass - IN/OPTIONAL - The password to send with the URL (Requires a login name). ;   $sParams - IN/OPTIONAL - Optional parameters to send with the page. ; Returns: ;   A valid URI-encoded URL. ; =================================================================== Func _WebComposeURL($sURL, $sLogin = "", $sPass = "", $sParams = "")     Local Const $aURIValidChars[256] = _         [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, _         0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0, _         1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1, _         0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0, _         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, _         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, _         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, _         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]     Local $sFullURL     Local $nPos = StringInStr($sURL, "://")     If Not $nPos Then         $sFullURL = "http://"     Else         $sFullURL = StringLeft($sURL, $nPos+2)         $sURL = StringTrimLeft($sURL, $nPos+2)     EndIf     If $sLogin And StringLeft($sURL, StringLen($sLogin)) <> $sLogin Then         $sFullURL &= $sLogin         If $sPass Then $sFullURL &= ":" & $sPass         $sFullURL &= "@"     EndIf     For $i = 1 To StringLen($sURL)         Local $c = StringMid($sURL, $i, 1)         If Number($aURIValidChars[Asc($c)]) Then             $sFullURL &= $c         Else             $sFullURL &= StringFormat("%%%02X", Asc($c))         EndIf     Next     If $sParams Then         $sFullURL &= "?"         For $i = 1 To StringLen($sParams)             Local $c = StringMid($sParams, $i, 1)             If $c = " " Then $c = "+"             If Number($aURIValidChars[Asc($c)]) Then                 $sFullURL &= $c             Else                 $sFullURL &= StringFormat("%%%02X", Asc($c))             EndIf         Next     EndIf     Return $sFullURL EndFunc; _WebComposeURL() #EndRegion _WebComposeURL()

  • BoonPek likes this




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users