1

(66 відповідей, залишених у PHP)

VTrim написав:

Ось і весь "захист" :)

<?php

$url = 'https://www.olx.ua/obyavlenie/elektropila-makita-uc4051a-IDtMiOG.html';

$cookie_path = $_SERVER['DOCUMENT_ROOT'].'/cookie.dat';

preg_match('|-ID(.*).html|', $url, $id);

$olx = curl_init($url);
curl_setopt($olx, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($olx, CURLOPT_RETURNTRANSFER, true);
curl_setopt($olx, CURLOPT_HEADER, 1);
curl_setopt($olx, CURLOPT_COOKIEFILE, $cookie_path);
curl_setopt($olx, CURLOPT_COOKIEJAR, $cookie_path);
$result = curl_exec($olx);
curl_close($olx);

preg_match("|phoneToken = '(.*)';|", $result, $token);

$olx_number = curl_init('https://www.olx.ua/ajax/misc/contact/phone/' . $id[1] . '/?pt=' . $token[1]);
    curl_setopt($olx_number, CURLOPT_HTTPHEADER, [
            'Host: www.olx.ua',
            'Accept: */*',
            'Accept-Language: uk,ru;q=0.8,en-US;q=0.5,en;q=0.3',
            'Accept-Encoding: gzip, deflate, br',
            'Connection: keep-alive',
            'X-Requested-With: XMLHttpRequest'
        ]);
        curl_setopt($olx_number, CURLOPT_REFERER, $url);
        curl_setopt($olx_number, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($olx_number, CURLOPT_COOKIEFILE, $cookie_path);
        curl_setopt($olx_number, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($olx_number, CURLOPT_RETURNTRANSFER, true);
        $result = curl_exec($olx_number);
        curl_close($olx_number);
        
        $json = json_decode($result);
        echo $json->value;

Переклад мовою Python 3. Можливо, так комусь буде зручніше:

import re
import pycurl
from io import BytesIO
from bs4 import BeautifulSoup
import json

url="https://www.olx.ua/obyavlenie/elektropila-makita-uc4051a-IDtMiOG.html"
b = BytesIO()
c = pycurl.Curl()
cookie_path = 'cookie.dat'
ID = re.findall("-ID(.*?)\.html", url)[0]
c.setopt(pycurl.URL, url)
c.setopt(pycurl.SSL_VERIFYPEER, False)
c.setopt(pycurl.WRITEFUNCTION, b.write)
c.setopt(pycurl.HEADER, 1)
c.setopt(pycurl.COOKIEFILE, cookie_path)
c.setopt(pycurl.COOKIEJAR, cookie_path)
c.perform()
c.close()
data = b.getvalue()
soup = BeautifulSoup(data, "html.parser")
phoneToken = re.findall("var phoneToken = '(.*?)'", soup.text)[0]
phone_url='https://www.olx.ua/ajax/misc/contact/phone/{0}/?pt={1}'.format(ID, phoneToken)
bb = BytesIO()
c = pycurl.Curl()
c.setopt(pycurl.URL, phone_url)
c.setopt(pycurl.HTTPHEADER, [
            'Host: www.olx.ua',
            'Accept: */*',
            'Accept-Language: uk,ru;q=0.8,en-US;q=0.5,en;q=0.3',
            'Accept-Encoding: gzip, deflate, br',
            'Connection: keep-alive',
            'X-Requested-With: XMLHttpRequest'
        ])
c.setopt(pycurl.WRITEFUNCTION, bb.write)
c.setopt(pycurl.REFERER, url)
c.setopt(pycurl.COOKIEFILE, cookie_path)
c.setopt(pycurl.SSL_VERIFYPEER, False)
c.setopt(pycurl.USERAGENT, 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Mobile Safari/537.36')
c.perform()
c.close()
data = bb.getvalue()
try:
    json_data = json.loads(data)
    phoneNumber=json_data['value']
except:
    phoneNumber ='Перевірте номер за посиланням оголошення'
print(phoneNumber)