分類
Javascript

利用Javascript來將URL的追蹤碼移除

工具連結: https://sample.diary.tw/urlshare/

在分享連結給朋友時, 往往會因為有過多的追蹤碼(Tracking Code)像是 utm_*, 或是 facebook 的 fbclid 等, 很長以外, 也不想將追蹤碼被分享, 這個時候, 往往就需要手動將 URL上的對應參數給移除後再分享出去.

利用 Javascript 中的 URL物件與 searchParams 可以方便與快速地移除這些小東西, 程式碼主要用到了 searchParams 中的 delete 即可, 例如:

分類
Python

如何快速查找URL對應重導後的URL-使用Python

有時有些URL會因為分析, 或是廣告等原因, 需要進行重導(redirect), 然而在程式實作上, 若需要找到這個重導的結果URL, 要如何進行呢? 可以使用 requests library 的訪問連結後來取得, 程式如下:

response = requests.get('https://youtu.be/dQw4w9WgXcQ') 
print(response.url) # https://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtu.be

利用 requests.get 的結果, 再將 response 的 url 取出即可.

參考資料:

https://stackoverflow.com/questions/36070821/how-to-get-redirect-url-using-python-requests

分類
系統技術

再談URL長度上限

先來看一下之前寫的:

由 browser 的上限來看是 2083, 而由 apache / iis 來看則是 8190 / 4096 兩個等級.

不過無論如何, 這個 url 上限的討論是個很熱門的問題:

https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers

除了 RFC / Browser / Web Server 外, 還多提出了 CDN (其中的 status code 414 (414 URI Too Long, https://tools.ietf.org/html/rfc7231#section-6.5.12) 就是在描述這個:

這個很重要, 因為 CDN 是轉遞內容的重要功能, 不過看起來長度也都放得很寬.

再來看個別瀏覽器利用測試的方式來查看長度:

Browser Address bar document.location or anchor tag
Chrome 32779 >64k
Android 2192 >64k
Firefox >64k >64k
Safari >64k >64k
IE11 2047 5120
Edge 16 2047 1024

也都有相當的長度.

不過由以上來看, 還是得保守地使用約在 2000 bytes 長度的 url 較為保險.

 

分類
手機大未來

如何於手機開啟Facebook APP指定粉絲團、活動、社團、個人頁的方式

在網頁上或是APP裡, 想要於行動設備開啟 Facebook APP的指定粉絲團、活動、社團、個人頁, 要如何進行呢?

可以使用 fb:// 的 intent protocol, 以下為簡單說明:

粉絲專頁, 以 facebook 本身官方的粉絲專頁為例, https://www.facebook.com/facebook/, 我們先找出它的 fan page id: 20531316728, 可以使用工具: https://lookup-id.com/

接下來我們需要實作判定 android 或 iOS 來決定啟動的方式, Android 如下:

fb://page/20531316728

iOS 如下:

fb://page?id=20531316728

大家可以試看看, 若是社團呢? 一樣, 先找出社團代碼, 以這個社團為例: https://www.facebook.com/groups/facebook360community/
, 找出它的 groupid 為: 241193586214590, 然後使用以下網址:

Android: fb://group/241193586214590

iOS: fb://group?id=241193586214590

當然, 像是活動, 或是個人頁, 也都可以使用對應的 event / profile 來進行操作, 很方便也很直覺, 另外最重要的一點, 記得若是有 id 的狀況下, 直接使用:

https://facebook.com/[id]

也會直接到對應的粉絲團、活動、社團、個人頁哦.

參考資料:

https://stackoverflow.com/questions/4810803/open-facebook-page-from-android-app
https://stackoverflow.com/questions/47794033/open-link-to-facebook-group-in-facebook-app-on-android

 

 

分類
Windows

iis7下的appcmd查詢reqeust

在沒有 appcmd 之前, 要像 apache 中的 server-status 中列出目前的 request url 只能利用 resource kit 的 request viewer, 不過在 iis7 中, 可以利用內建指令 appcmd 來查詢.

appcmd 有許多功能, 不過今天介紹的是查詢目前的 request, 先來看看說明文件:

http://technet.microsoft.com/zh-tw/library/cc772200%28v=ws.10%29.aspx

在 appcmd下, 有許多物件可供應用, 其中今天要介紹的就是 request, 不過可以操作的指令只有一個, 就是 list, 想查詢對該物件可用指令可以這樣下(以 site 為例):

>appcmd site /?
管理虛擬站台

APPCMD (command) SITE <identifier> <-parameter1:value1 …>

支援的命令:

list 列出虛擬站台
set 設定虛擬站台
add 新增虛擬站台
delete 刪除虛擬站台
start 啟動虛擬站台
stop 停止虛擬站台

(請使用 /? 取得每個命令的說明,例如 ‘appcmd.exe add site /?’。)

可以使用 list, set … 等多種操作指令, 而查詢目前的 request 則使用:

>appcmd list request
REQUEST “1400000080019834” (url:GET /xxx/xxxxx, time:1047344 msec, client:xxx.xxx.xxx.xxx, stage:SendResponse, module:IIS Web Core)
REQUEST “e20000438002e1fc” (url:GET /xxx/xxxxxx, time:71625 msec, client:xxx.xxx.xxx.xxx, stage:SendResponse, module:IIS Web Core)
….

可以很清楚地看到每個 request 的資訊, 包含 ip 及 url 及目前的狀態, 十分有用.

分類
好用軟體

再調整一下flickrset小工具

之前利用了 YQL 將 Flickr 中的 set 相簿 url 抓出來 (LINK), 方便在寫文章時, 取出整本相簿的相片內容, 也容易引用, 利用產生 html 的方式, 更方便應用.

不過還差了一點點, 就是預覽的功能, 今天花了一點時間, 多加了一些程式把這個功能加上去了, 操作方式很單純:

  1. 先填入 flickr set id
  2. 再選擇 “with html” 選項
  3. 按下 “產生圖片網址”
  4. 若 set id 正確, 下面會出現含 html code 的文字內容及一個新做的”直接秀圖”鈕
  5. 按下”直接秀圖”鈕即可

快來試看看囉, 工具網址在: http://sample.diary.tw/flickrset/

另外加碼送, 直接把 setid 放在 url 後面更方便, 操作就直接是操作上面的步驟而產生秀圖的結果, 方便傳遞相片使用, 例如:
http://sample.diary.tw/flickrset/?setid=72157600079438372

歡迎多多利用!!

ps. 也歡迎大家留言分享好圖好作品的連結!!

分類
程式技術

利用YQL抓出Flickr相簿中的照片url

在 Flickr 中, 有許多照片(廢話), 而這些照片, 也有放在相簿集(set)裡, 如何把相簿集裡的相片的 url 取出來呢?

首先我們先來看一個工具, 叫做 YQL (Yahoo! Query Language): http://en.wikipedia.org/wiki/Yahoo!_query_language , 這個語言是望文生義, 就是用來進行查詢 Yahoo! 服務的語言, 而我們需要的功能, 剛好裡面有提供, 所以我們就利用這個查詢語言來進行查詢, 先來看看語法, 到這個 YQL Console 來看: http://developer.yahoo.com/yql/console/

來到這裡, 真是開發者的天堂, Yahoo! 的服務查詢, 這裡幾乎都有提供, 而今天我們要查找的正是這個 table: flickr.photosets.photos, 假設今天要查的 photo set 是這個 url: http://www.flickr.com/photos/okilyt/sets/72157600079438372/, 則 set_id 就是 72157600079438372, 於是輸入如下的語法:

select * from flickr.photosets.photos where photoset_id = 72157600079438372

就會生出如下的 xml:

<?xml version="1.0" encoding="UTF-8"?>
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"
    yahoo:count="10" yahoo:created="2010-08-06T11:19:06Z" yahoo:lang="en-US">
    <diagnostics>
        <publiclyCallable>true</publiclyCallable>
        <url execution-time="141"><![CDATA[http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&photoset_id=72157600079438372&page=1&per_page=10]]></url>
        <user-time>142</user-time>
        <service-time>141</service-time>
        <build-version>8771</build-version>
    </diagnostics> 
    <results>
        <photo farm="1" id="460118008" isprimary="1" secret="4d856aaa72"
            server="239" title="DSC_3989"/>
        <photo farm="1" id="460125135" isprimary="0" secret="15a3d24484"
            server="208" title="DSC_3987"/>
        <photo farm="1" id="460117456" isprimary="0" secret="76bdfd928c"
            server="191" title="DSC_3986"/>
        <photo farm="1" id="460117112" isprimary="0" secret="515535f02e"
            server="253" title="DSC_3983"/>
        <photo farm="1" id="460116928" isprimary="0" secret="68286fc46a"
            server="200" title="DSC_3981"/>
        <photo farm="1" id="460116620" isprimary="0" secret="4245ef4c5a"
            server="183" title="DSC_3980"/>
        <photo farm="1" id="460123637" isprimary="0" secret="68351dfe14"
            server="236" title="DSC_3963"/>
        <photo farm="1" id="460123365" isprimary="0" secret="80edceee74"
            server="243" title="DSC_3961"/>
        <photo farm="1" id="460115832" isprimary="0" secret="80b8d482bf"
            server="246" title="DSC_3958"/>
        <photo farm="1" id="460122569" isprimary="0" secret="2ee7c9e00e"
            server="242" title="DSC_3954"/>
    </results>
</query> 

真是方便耶, 不過筆數好像只有十筆, 全部應該要有 18筆才對, 所以查了一下資料, http://developer.yahoo.com/yql/guide/paging.html , 發現可以在 table 後方加上 (0) 來進行全部查出, 於是調整一下語法如下:

select * from flickr.photosets.photos(0) where photoset_id = 72157600079438372

就可以方便地把整個 photo set 中的相片查找出來了, 而相片的 url 就可以利用這些 xml 來組合出來, 語法如下:

http://farm[farm].flickr.com/[server]/[id]_[secret].jpg

很容易吧! 這樣一來, 要取出某相簿的照片 url 就方便多了, 寫成小工具, 放在這裡: http://sample.diary.tw/flickrset/

參考資料: http://www.nakedtechnologist.com/?p=476

分類
好用軟體

Google縮短網址服務-免安裝Chrome

這是個邊練功邊做出來的小玩意.

之前在 Google 上有個服務是縮短網址的, 名為 goo.gl (http://goo.gl/), 不過, 目前僅能用在像是 google maps 的 labs 服務上, 參閱: http://briian.com/?p=7105 , 或是需要安裝 Google Chrome 套件, 參閱: http://sofree.cc/goo-gl/

現在不用這麼麻煩了, 直接線上使用網頁的方式, 就能直接產生給你, 請連結: http://sample.diary.tw/goo.gl/ 或是 http://goo.gl/danL (先縮了), 就可以將需要縮短的 url 透過這個方式來縮短.

程式實作也很單純, 只是利用了一個 web request 到 goo.gl 的 api 服務, 程式碼如下:

include("HttpClient.class.php");

$u = $_GET["u"];

$client = new HttpClient("goo.gl");
$client->setHandleRedirects(false);
if (!$client->post("/api/[email protected]&url=" . urlencode($u), array("a"=>"1") )) {
    die('An error occurred: '.$client->getError());
}
echo $client->getHeader("Location");

利用了 HttpClient 的 php class, (參閱: http://scripts.incutio.com/httpclient/ ), 並 post 資料到 http://goo.gl/api/[email protected]&url=[url], 取回 Location header 即可.

若有需要直接取用的網友, 可以訪問 http://sample.diary.tw/goo.gl/u.php?u=[url] 就可以取得了. 例如: http://sample.diary.tw/goo.gl/u.php?u=https://diary.tw/tim

免安裝, 免外掛, 直接線上使用 goo.gl 的 google shortener url 縮網址服務
http://sample.diary.tw/goo.gl/

[2010/7/23 13:40]
剛發現, goo.gl 的 api, 可以不用帶前面的 [email protected] 參數, 所以整個就只要如下的 url 即可:

...
if (!$client->post("/api/url?url=" . urlencode($u), array("a"=>"1") )) {
    die('An error occurred: '.$client->getError());
}
...

 

分類
Blog服務

加上推推王書籤小功能

funp.com(推推王)最近似乎還蠻火熱的, 我最喜歡是他的頁面上的各區塊dock功能. 今天索性加入會員, 並加上了他的書籤功能, 加入的方式和之前介紹過的 hemidemi 及 myshare 類似, 我將我加在 tattertools 上的 code 整理出來, 給各位 tattertools的用戶參考:

<a href=# target=_blank onmousedown="javascript:w=window;d=document;t='';if(w.getSelection)t=w.getSelection();if(d.getSelection)t=d.getSelection();if(d.selection)t=d.selection.createRange().text;this.href='http://funp.com/pages/submit/add.php?url='+encodeURIComponent('https://diary.tw')+'&s='+encodeURIComponent('')+'&t='+encodeURIComponent(t); return true;"><img src="http://funp.com/images/tools/funpAdd78x14.png" alt="推推王" title="推推王" border="0"></a>

有興趣的, 可以自行試試哦, 參數共有 url, s (title), t (description) 三個.

 

分類
程式技術

Referer參數的最大長度

在分析網站記錄時, 很常用的一個資訊就是來源參考, 也就是 http reqeust header 中的 referer, 我們先來看看 rfc 的規格:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.36

在 rfc 內並未對此進行規範, 也就是說, 沒有限制該參數的最大長度限制, 這樣看來應該從 url 的最大長度來看, 接下來我們再來看看相關的 rfc 資料:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2.2
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23