Airbnb登录脚本通过命令行使用PHP


Airbnb Login Script through the command line using PHP

是否有一种方法通过CLI PHP脚本以编程方式登录到Airbnb的电子邮件/密码?然后得到回复?

谢谢。

如果你想远程登录Airbnb并返回信息,你可以使用cURL向Airbnb发布数据并返回结果。

关于如何发布表单数据的示例可以在整个网络上找到,但是,可以在这里找到一个非常有信誉的教程。实际上,您希望cURL登录页面,并使用POST包含登录信息。
<?php
// A very simple PHP example that sends a HTTP POST to a remote site
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://www.airbnb.com/login");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
            "email=" . $email . "&password=" . $password);
// in real life you should use something like:
// curl_setopt($ch, CURLOPT_POSTFIELDS, 
//          http_build_query(array('email' => $email, 'password' => $password)));
// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);
// further processing ....
if ($server_output == "OK") { ... } else { ... }
?>

请务必查看SO上的答案,以及这里的教程。

是的,有。Airbnb的API不向公众开放,但如果你从手机上嗅探流量,你就能看到哪些请求被发送到哪个端点。我对他们的API做了一些实验,它如下所示,用于登录

<?php
class AirBnB {    
// Define the properties
public $currency = 'USD';
public $language = 'en';
public $country = 'us';
public $network = 'AT&T';
public $apiKey = '915pw2pnf4h1aiguhph5gc5b2';
public $adId = '911EBF1C-7C1D-46D5-A925-2F49ED064C92';
public $deviceId = 'a382581f36f1635a78f3d688bf0f99d85ec7e21f';
public function SendRequest($endpoint, $token, $post, $data, $cookies) {
    $headers = array(
                'Host: api.airbnb.com',
                'Accept: application/json',
                'Accept-Language: en-us',
                'Connection: keep-alive',
                'Content-Type: application/json',
                'Proxy-Connection: keep-alive',
                'X-Airbnb-Carrier-Country: '.$this->country,
                'X-Airbnb-Currency: '.$this->currency,
                'X-Airbnb-Locale: '.$this->language,
                'X-Airbnb-Carrier-Name: '.$this->network,
                'X-Airbnb-Network-Type: wifi',
                'X-Airbnb-API-Key: '.$this->apiKey,
                'X-Airbnb-Device-ID: '.$this->deviceId,
                'X-Airbnb-Advertising-ID: '.$this->adId,
                );
    // Add the new custom headers
    if($token) {
        $header = 'X-Airbnb-OAuth-Token: '.$token;
        array_push($headers, $header);
    }
    // Add the query string
    if(!$post && is_array($data)) {
        $endpoint .= '?'.http_build_query($data);
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://api.airbnb.com/'.$endpoint);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Airbnb/15.50 iPhone/9.2 Type/Phone');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    if($post) {
        curl_setopt($ch, CURLOPT_POST, TRUE);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    }
    if($cookies) {
        curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');            
    } else {
        curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
    }
    $response = curl_exec($ch);
    $http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);    
    return array(
                'http' => $http,
                'response' => $response
                );
}
public function Authorize($username, $password) {
    $data = array(
                'username' => $username,
                'password' => $password,
                'prevent_account_creation' => TRUE,
                );
    $data = $this->SendRequest('v1/authorize', FALSE, TRUE, $data, FALSE);
    if($data['http'] == 200) {
        $json = @json_decode($data['response'], TRUE);
        return $json['access_token'];
    } else {
        return FALSE;
    }
}
}
// Call a new instance of AirBnB
$airbnb = new AirBnB;
// Get the OAuth token
$token = $airbnb->Authorize('my@email.com', 'password');
?>

你可以在这里找到更多关于他们的API