Jump to content

using CURL twice! (retrieve "token")


Torrie

Recommended Posts

There's a website that does NOT use cookies and does NOT use javascript.

 

When I log in, I get an html page with a single form input. Hidden in the source code, there's also a random number that gets generated with every page reload (I'll call that a  "security token").

 

Using a regular web browser, I type in my product barcode into the form input and the website will return the item "size" and item "weight."

 

PROBLEM: When I replicate browser input using CURL, the website only returns the item size! (The html table where the item "weight" should appear is MISSING when I use CURL).

 

In trying to solve this myself, I discovered that Google Chrome has a nifty tool in the "Network" tab called "Copy As CURL" which goes something like this:

 

I visit the website using Google Chrome browser, input my product barcode, and the website returns the "size" and "weight." I then use Google Chrome's "Copy as CURL" and now I've got a CURL script. Obviously, I use substitute some of the script with a bit of php code to retrieve and repost the randomly generated "security token." 

 

But it never works. The code IS successful at retrieving the "security token" because when that is unsuccessful, I get an error page. So I know at least the "security token" part of the CURL code works. However, the CURL code only returns the "size" and NOT the item "weight."

 

Here's the code:

 

<?php   $ch = curl_init();   curl_setopt($ch, CURLOPT_URL,'http://www.website.com/index.html?user=username&pass=password'); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);   curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/601.7.0 (KHTML, like Gecko) Version/9.0.1');  // visits website, get the Security Token:$result = curl_exec($ch); preg_match('/ControlNumber\"\svalue=\"(.*)\"/',$result,$number);     $token = $number[1]; // with Security Token in hand, now posts the variables just as I would do using a web browser:curl_setopt($ch, CURLOPT_POSTFIELDS, array('controlNumber'=>$token,'inputname1'=>"productNumber",'javascript'=>'none')); $websiteResponse = curl_exec($ch);  // The following var_dump only returns the product "size" and NOT the product "weight"var_dump($websiteResponse); ?>

 

Please, would anyone know what I'm doing wrong? The problem is that CURL returns a different page than a web browser does.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.