בירור | API קול הלשון
-
זה הapi שלהם לחיפוש למשל...
לא בעיה להוציא מהאתר חלק, השאלה היא api של מה אתה צריך?
const search_text = "הרב"; const headers = { 'Referer': 'https://www2.kolhalashon.com/', }; fetch(`https://www2.kolhalashon.com:444/api/Search/WebSite_GetSearchItems/${encodeURIComponent(search_text)}/-1/1/4`, { headers }) .then(response => response.text()) .then(data => console.log(data));
-
@מוט-0 כתב בבירור | API קול הלשון:
@צדיק-תמים הרצתי דרך nodejs עדיין היה חסום, התכוונת להוסיף נתונים בשליחה? אם כן, איך עושים את זה?
לא הבנתי מה בדיוק אתה רוצה לעשות?
-
@מוט-0 אני לא יודע מה הידע שלך באופן כללי.
אבל הAPI של קול הלשון חוסם בקשות שאינם עם הHeader:
Referer: https://www2.kolhalashon.com
כלומר נשלחו מתוך האתר שלהם. ואי אפשר לשנות את ההידר הזה בבקשות שנשלחות בJS מהדפדפן. כן אפשר עם תוספים שונים, די בקלות.
לכן אני מציע לשלוח את הבקשות דרך Node.js שם אין מגבלה כזאת, ושם תוכל להגדיר את הheader כרצונך ולחקות באופן מלא את הבקשה שהאתר של קול הלשון שולח, דוגמה בnodejs עם ספריית axios:const axios = require('axios'); let data = JSON.stringify({ "RavID": 1297, "FromRow": 0, "NumOfRows": 24, "OrderBy": 7, "PrefferedLanguage": 0, "FiltersArray": [] }); let config = { method: 'post', maxBodyLength: Infinity, url: 'https://www2.kolhalashon.com:444/api/Search/WebSite_GetRavShiurim/', headers: { 'Content-Type': 'application/json', 'Referer': 'https://www2.kolhalashon.com/' }, data : data }; axios.request(config) .then((response) => { console.log(JSON.stringify(response.data)); }) .catch((error) => { console.log(error); });
וכדי שתוכל לשלוח בקשות מהדפדפן, תוכל להקים שרת אקספרס קטנטנן שישלח עבורך את הבקשות - משהו כזה:
const axios = require('axios') const express = require('express') const app = express() app.use(express.json()) app.use((req, res, next) => { res.header('Access-Control-Allow-Origin', '*') res.header('Access-Control-Allow-Headers', '*') next() }) app.post('/:url(*)', async (req, res) => { try { const { data } = await axios.post(req.params.url, req.body, { headers: { 'Content-Type': 'application/json', Referer: 'https://www2.kolhalashon.com/' } } ) res.send(data) } catch (error) { res.status(500).send(error) } }) app.listen(3001, () => { console.log('server started on port 3000') })
ואז תוכל לשלוח את הבקשות בדפדפן:
fetch('http://localhost:3001/https://www2.kolhalashon.com:444/api/Search/WebSite_GetRavShiurim', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ RavID: 1297, FromRow: 0, NumOfRows: 24, OrderBy: 7, PrefferedLanguage: 0, FiltersArray: [] }) } ) .then(response => response.text()) .then(result => console.log(result)) .catch(error => console.log('error', error))