作者 主題: HTTP Auth 問題  (閱讀 3835 次)

0 會員 與 1 訪客 正在閱讀本文。

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
HTTP Auth 問題
« 於: 2004-07-13 16:23 »
http://username:password@host 格式下
想請教大家,有人知道 username 若含有@ 字符
該如何 escape 它呢?
例如:
http://abelyang@hotmail.com:passwd@phorum.study-area.org


這個abelyang@ 的 @ 符號要如何處理 ?
(依RFC 定義USERNAME 不能含@, 但它的確是含了)


我寫一個 spam filter, 要登錄這個地方 http://members.spamcop.net/,
自動貼它的格式

ps: 我知道寄的如何處理,但純研究,對那個 username 含@ 好奇

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
HTTP Auth 問題
« 回覆 #1 於: 2004-07-13 16:52 »
剛剛試著寫了一下
<?php
 $str="abelyang@hotmail.com:passwd@phorum.study-area.org";
 $trans = array("@" => "%40");
 $revstr=strrev($str);
 $account_passwd_len=strlen(strrev(strstr($revstr,'@')))-1;
 echo strtr(substr($str,0,$account_passwd_len),$trans).substr($str,$account_passwd_len);
?>
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
HTTP Auth 問題
« 回覆 #2 於: 2004-07-14 01:12 »
%40 代 @ 的做法會受 agent 影響,不過看起來 wget/curl 都過的去
ricky 提供了一個不錯的方案,
只是我的重點是要過那個 HTTP Auth,去丟 POST 資料,大概的做法就如下
(在我們問題裏,重點只在 Authorization)
        if($fp=fsockopen($host,$port,$errno,$errstr,30)){
                fputs($fp,"POST /cs HTTP/1.1\n");
                fputs($fp,"Host: members.spamcop.net\n");
               fputs($fp,"Authorization: Basic YWJlbalhbmdAdHauaWMubmVaLnR3OmF5aaMwMja3Cg==\n");
                fputs($fp,"Content-type:multipart/form-data\n");
                fputs($fp,"Content-length:".strlen($post_data)."\n");
                fputs($fp,"Referer:http://members.spamcop.net/index.html\n");
                fputs($fp,"Connection:close\n\n");
                fputs($fp,"$post_data");
                while($line=fgets($fp,128))
                        $return.=$line;
                $return=strstr($return,"\r\n\r\n");
                fclose($fp);
                return $return;
        }

不過,現在發現 POST 後,還有一個 Check List  :o ....
現在再為那個 Check List 及 Confirm 傷腦筋
在 ricky 兄的建議及自己的研究下,後面的倒是不成問題

題外話,我覺得 DNSBL 大概只有 spamcop.net 較準,其他的幾乎 lose 99%, 而 spamcop 大概可以命中 50%,而我要做的就是讓 spamcop
能更好,自動把這一頁 http://211.72.210.251/spamcop.html 餵給他,
讓他有更多的 BL 資料