开发者

copy data from remote server -- got problem

I wanted to copy files from a remote server, but it seems that the remote host is using session, and needs cookies.

well I used this method after defining variables...

$url="http://example.org/exmple.mp3";
$nn = "\r\n";
$cookies="";
$request = GET . " " . str_replace ( " ", "%20", $url ) . " HTTP/1.1" . $nn . "Host: " . $host . $nn . "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14" . $nn . "Accept: */*" . $nn . "Accept-Language: en-us;q=0.7,en;q=0.3" . $nn . "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7" . $nn . "Pragma: no-cache" . $nn . "Cache-Control: no-chache" . $nn  . $proxyauthorization . $referer . $cookies . "Connection: Close";

$fp= socksopen($Proxy,$port, $errno, $errstr, 15 );

socket_set_timeout ( $fp, 120 );

fputs ( $fp, $request );

fflush ( $fp );

//read header

$i = 1;

do {

$header.= @fgets ( $fp, 128 );

$i++;

} while ( strpos ( $header, $nn . $nn ) === false );

echo $header;

fclose ($fp);

now I have the header with cookies that the url said :

HTTP/1.1 302 Moved Temporarily Content-length: 0 Content-type: text/html Server: Sun-ONE-Web-Server/6.1 Date: Mon, 28 Dec 2009 13:40:53 GMT Set-cookie: ERIGHTS=5YAaxxmNsMuTK87E1TCAohwDRuyqBaCgM-oehmg24bkzHplCtmgn7zMA==;path=/;domain=.example.org Set-cookie: WLSESSION=1528980108.20480.0000; expires=Tue, 29-Dec-2009 13:40:52 GMT; path=/ Location: http://example.org/exmple.mp3&tag=1 Via: 1.1 proxy-server1 Proxy-agent: Sun-Java-System-Web-Proxy-Server/4.

then I did some sting开发者_StackOverflow code and built this in the code:

$cookies="ERIGHTS=5YAaxxmNsMuTK87E1TCAohwDRuyqBaCgM-oehmg24bkzHplCtmgn7zMA==, WLSESSION=1528980108.20480.0000";

re-requesting the url with same method mentioned above and again i have got same header with another cookies

It seams that the remote website is treating me as a first-time visitor each time and sets new cookies gain

what is wrong?


First off, congratulations for trying to do this by hand yourself instead of using something pre-packaged like cURL. "Real programmers" do that from time to time, even if it's less efficient or reliable, because it increases our understanding of the systems we use and build.

Now, on to the problem at hand.

You're not transmitting the cookies to the server correctly. Your code is sending just the cookie value itself, not the "Cookie" headers that you need to send. The correct way to send a cookie with a request is Cookie: name=value, as in Cookie: ERIGHTS=5YAaxxmNsMuTK87E1TCAohwDRuyqBaCgM-oehmg24bkzHplCtmgn7zMA==,WLSESSION=1528980108.20480.0000.


It seems a lot of trouble to be handcrafting the HTTP request. Why not use something like cURL in PHP which supports cookies out of the box.


there is one thing, the file i am trying to copy is a .pdf file exactly

i checked that by my browser, the results:

say the URL is:

http://example.com/stamp/stamp.jsp?tp=&arnumber=5344171&isnumber=5344169

I checked the source code of the URL, it contains a redirection to another page that either is a javascript with iframe

source of the page (from my browser)

     <frameset rows="65,35%">
<frame src="http://example.com/stamp/banner.jsp" frameborder="0" framespacing="0" framepadding="0" scrolling="no" />
<frame src="http://example.com/stampPDF/getPDF.jsp?tp=&arnumber=5255176&isnumber=5255174" frameborder="0" />

as you see when I click the URL, it redirects me to URL2 the URL2 is this:http://example.com/stampPDF/getPDF.jsp?tp=&arnumber=5255176&isnumber=5255174

the URL2 contains .pdf file I can easily copy(download).

but when i use my code mentioned above, $url="http://example.com/stamp/stamp.jsp?tp=&arnumber=5255176&isnumber=5255174" it needs cookies to set with my request, when receive cookies and set and send cookies with my request it again replies a new cookie !!

what is wrong guys?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜