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)