Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
sõnum |
|
tulema
HV kasutaja
liitunud: 23.04.2003
|
27.10.2021 18:22:26
Price checker |
|
|
Script, mis võtab Amazon lehelt tootehinna. Script töötab vahelduva eduga, kord saab hinna kätte ja kord mitte. Suurem ajast ei saa.
Mingit moodi peaks saama kätte puhta HTMLi, et mida mu server näeb?
Server - planet.ee
<?php
$doc = new DOMDocument;
$doc->loadHTMLFile('https://www.amazon.de/-/en/dp/B07SNPKX5Y/ref=pav_d_fromAsin_B08KH2MTSS_toAsin_B07SNPKX5Y');
$doc->preserveWhiteSpace = false;
$doc->strictErrorChecking = false;
$doc->recover = false;
$xpath = new DOMXPath($doc);
$priceBlock = $xpath->query('//span[@id="price_inside_buybox"]');
$priceContent = $priceBlock->item(0)->textContent;
echo 'Hind: ' . $priceContent;
?> |
|
|
Kommentaarid: 58 loe/lisa |
Kasutajad arvavad: |
|
:: |
1 :: |
0 :: |
52 |
|
tagasi üles |
|
|
LKits
HV Guru
liitunud: 06.09.2007
|
|
Kommentaarid: 13 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
13 |
|
tagasi üles |
|
|
tulema
HV kasutaja
liitunud: 23.04.2003
|
28.10.2021 09:48:00
|
|
|
Ei tööta 100%
Kummaline
|
|
Kommentaarid: 58 loe/lisa |
Kasutajad arvavad: |
|
:: |
1 :: |
0 :: |
52 |
|
tagasi üles |
|
|
LKits
HV Guru
liitunud: 06.09.2007
|
|
Kommentaarid: 13 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
13 |
|
tagasi üles |
|
|
tulema
HV kasutaja
liitunud: 23.04.2003
|
28.10.2021 14:59:52
|
|
|
Testisin sama scripti jooksutada teises serveris ja seal töötab 100%.
|
|
Kommentaarid: 58 loe/lisa |
Kasutajad arvavad: |
|
:: |
1 :: |
0 :: |
52 |
|
tagasi üles |
|
|
LKits
HV Guru
liitunud: 06.09.2007
|
|
Kommentaarid: 13 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
13 |
|
tagasi üles |
|
|
napoleon
Unknown virus
liitunud: 08.12.2008
|
28.10.2021 16:58:04
|
|
|
kõige lihtsam ja lollikindlam on debugimist alustada nii:
$html = file_get_contents('https://www.amazon.de/-/en/dp/B07SNPKX5Y/ref=pav_d_fromAsin_B08KH2MTSS_toAsin_B07SNPKX5Y');
$doc = new DOMDocument;
$doc->loadHTML($html);
...
ja kui hinda ei leia, siis
echo $html;
ja uuri mis reaalselt kätte saadi.
Kui vahel töötab ja vahel mitte, siis ma esimese asjana kahtlustaks, et amazonile eriti ei meeldi kui bot-d pärimas käivad ja on selle vastu mingi kaitse tehtud. Aga seda peaksid siis tulemusest nägema mis sealt reaalselt kätte saadi.
|
|
Kommentaarid: 76 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
59 |
|
tagasi üles |
|
|
tulema
HV kasutaja
liitunud: 23.04.2003
|
28.10.2021 17:58:23
|
|
|
Vastu vaatab:
Nojah, pekkis.
Captcha kood, just selliste scriptide vastu
napoleon, aitäh!
|
|
Kommentaarid: 58 loe/lisa |
Kasutajad arvavad: |
|
:: |
1 :: |
0 :: |
52 |
|
tagasi üles |
|
|
napoleon
Unknown virus
liitunud: 08.12.2008
|
28.10.2021 18:07:27
|
|
|
Eks sa hakka neid google tulemusi närima
https://www.google.com/search?client=opera&q=php+curl+set+user+agent&sourceid=opera&ie=UTF-8&oe=UTF-8
põhimõtteliselt võib proovida see html curl funktsioonide abil kätte saada, seal saad user agent, referrer, cookie jms. fake-da ehk valetada nagu tuleksid tavalise browseriga. See võib aga ei pruugi aidata olenevalt sellest kui nutikalt amazon selle bot kontrolli on teinud. Hetkel ise ei viitsi konkreetseid näiteid tegema hakata ehk saad õnge mitte kala
Ja kui sa neid päringuid mitmeid teed, siis pead neile mingi mõistliku vahe jätma et paistaks nagu päris inimene klikib st. seal peaks olema mingi konstant ehk näiteks mitte vähem kui 5 sek pluss mingi random, et see alati täpselt 5 ei oleks.
|
|
Kommentaarid: 76 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
59 |
|
tagasi üles |
|
|
LKits
HV Guru
liitunud: 06.09.2007
|
|
Kommentaarid: 13 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
13 |
|
tagasi üles |
|
|
napoleon
Unknown virus
liitunud: 08.12.2008
|
28.10.2021 18:16:30
|
|
|
Resolutsiooni ma pole kindel et vaadatakse. Seda ei saa HTTP headeritest ju kätte vaid alles javasciptiga siis kui leht on laetud.
|
|
Kommentaarid: 76 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
59 |
|
tagasi üles |
|
|
LKits
HV Guru
liitunud: 06.09.2007
|
|
Kommentaarid: 13 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
13 |
|
tagasi üles |
|
|
napoleon
Unknown virus
liitunud: 08.12.2008
|
28.10.2021 18:30:18
|
|
|
LKits, ok ma siis natuke põhjendan miks arvan et ei vaadata.
Leht laetakse alla. Kui seda Bot-ga teha, siis ei pruugi javascript üldse käivituda. Enamasti ei käivitugi kuna bot pole täisfunktsionaalne browser. Aga isegi kui on, siis mida see javascript teeks? Ilmselt lihtsalt redirecti captcha lehele. Aga selle redirecti võib bot vabalt kurele saata kuna lehe koos huvipakkuva infoga on ta selleks ajaks juba alla laadinud. Otsus kas lehte kuvada või mitte tuleks teha enne kui browser on selle juba alla laadinud
Muidugi saab javascriptiga igasuguseid trikke teha a'la õige asi tuleb ajax abil alles siis kui javascript on asjaga rahule jäänud jms., aga selle debugib suht kiiresti välja ja siis saab päringu otse õige lingi pihta teha. Mitte et seda debugimist ei saaks äärmiselt tülikaks teha millega tavaline skriptitatikas hakkama ei saa, aga võimalik see siiski on.
Ma ise vist prooviks esimese asjana lehele valetada nagu oleksin mingi otsimootor. Otsimootoritega on nad ilmselt natuke leebemad selle captcha nõudmise osas.
|
|
Kommentaarid: 76 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
59 |
|
tagasi üles |
|
|
LKits
HV Guru
liitunud: 06.09.2007
|
|
Kommentaarid: 13 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
13 |
|
tagasi üles |
|
|
napoleon
Unknown virus
liitunud: 08.12.2008
|
28.10.2021 18:45:20
|
|
|
mkay, kunagi kui viitsin siis vaatan natuke mis andmed konkreetselt amazoni puhul liiguvad.
User agent+IP+küpsis+Referer on juba üpris tõhus kui lisaks vaadata veel sealt tulevate päringute intervalli. Eriti veel kui lisame, et tegemist ei ole tegelikult sensitiivse infoga vaid see on nagunii kõigile avalikult näha ja a'la iMacros pluginat mitte päris sihtotstarbeliselt kasutades saad päringud ikka automatiseerida nii, et javascript ka rahule jääb.
|
|
Kommentaarid: 76 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
59 |
|
tagasi üles |
|
|
tulema
HV kasutaja
liitunud: 23.04.2003
|
28.10.2021 19:58:44
|
|
|
Töös oli nö. hinnavalvur, kui hind kukkus ette antud piirini, siis tuli teavitus e-mailile.
Tõsi on see, et scripti katsetamise ajal oli lehelaadimisi muidugi rohkem... Hiljem määrasin intervall 6h, aga üsna pea hakati nõudma captcha.
|
|
Kommentaarid: 58 loe/lisa |
Kasutajad arvavad: |
|
:: |
1 :: |
0 :: |
52 |
|
tagasi üles |
|
|
RassK
HV Guru
liitunud: 17.01.2007
|
02.11.2021 16:04:10
|
|
|
tulema, nagu napoleon siin juba mainis, siis võib proovida elementaarsete headeritega mängida. Ala tee mingi user agent list ja randomiga tõmba sealt agenti string välja, kui see mõjutab aega millal captcha ette visatakse, siis on kindlasti arvestatav parameeter.
IP'd ei usu, et on põhiline parameeter, pigem secondary kuna iga ISP ei pruugi anda lõppkasutajale avalikku IP'd (arvestada tuleb siinkohal, et me ei räägi ainult Eestist). Samuti võib cookie randomiga iga 5-10 päringu järel ära kustutada.
|
|
Kommentaarid: 112 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
98 |
|
tagasi üles |
|
|
19Mart94
HV kasutaja
liitunud: 22.06.2010
|
04.11.2021 12:01:12
|
|
|
Ma ise olen sarnasel eesmärgil kasutanud Node.js-i ning (igivana) nightmare nimelist libraryt sinna juurde. See tehniliselt avab browseri akna ja siis saad Node.js koodiga juba sisu lugeda, igal avamisel saad määrata random UA, resolutsiooni jne. Samuti väike skeemitamine on nõnda, et avad kõigepealt pealehe, siis acceptid küpsised, vaatad mingit esilehel olevat toodet korraks ja siis liigud enda soovitud toote juurde alles.
|
|
Kommentaarid: 33 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
31 |
|
tagasi üles |
|
|
H_K
Aeg Maha 2n
liitunud: 09.01.2002
|
04.11.2021 15:44:55
|
|
|
Kas sellist asja ei ole juba keegi leiutanud.
https://camelcamelcamel.com/
Proovida ei viitsinud, kindlasti leiab sarnaseid veel.
_________________ --------------- |
|
Kommentaarid: 53 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
51 |
|
tagasi üles |
|
|
|