เข้าสู่เว็บไซต์ด้วย curl และดาวน์โหลดเว็บเพจ


0

ฉันกำลังพยายามลงชื่อเข้าใช้ในเว็บไซต์และดาวน์โหลดเว็บเพจ ไม่ต้องตื่นตระหนก - เว็บไซต์และข้อมูลประจำตัวเป็นความรู้สาธารณะ ...

อย่างไรก็ตามรหัสของฉันเป็นดังนี้:

curl -k https://url.retail.publishedprices.co.il/login > 01.txt

sfk xed 01.txt "_[start][0.10000 bytes]csrftoken__" +xed "_/>**__" +xed "_\q id=\qcsrftoken\q value=\q__" +xed "_\q __" -tofile 02.txt

set /p csrf=<02.txt

curl -k -d "username=retalix&password=12345&csrftoken=%csrf%" https://url.retail.publishedprices.co.il/file/d/RamiLevi/ > RL.txt

สิ่งที่รหัสทำคือดาวน์โหลดหน้าเข้าสู่ระบบแยกตัวแปร csrf และใช้รวมทั้งชื่อผู้ใช้ / รหัสผ่านเพื่อเข้าสู่ระบบย่อย "โดเมน" อื่นในเว็บไซต์เดียวกัน

ผลลัพธ์สุดท้ายควรเป็นหน้าเว็บที่บันทึกไว้ใน "RL.txt"แต่ไม่มีวิธีแก้ปัญหาที่ฉันสามารถหาได้และไม่เข้าใจว่าทำไม

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม!


คุณใช้ Windows รุ่นใดอยู่คุณ จำกัด การใช้ curl / sfk หรือไม่ คุณจะพิจารณา PowerShell หรือไม่?
CraftyB

windows 10 LTSB / C วิธีแก้ปัญหาโดยใช้ powershell นั้นใช้ได้ ขอขอบคุณ.
จอห์

คำตอบ:


1

ขณะที่ฉันกำลังทำงานกับสิ่งที่คล้ายกันในเวลาที่ฉันรวบรวมมันให้คุณได้อย่างรวดเร็ว:

โปรดเปลี่ยนเส้นทางและชื่อไฟล์ตามความต้องการของคุณตรวจสอบให้แน่ใจว่าเส้นทางนั้นมีสแลชต่อท้าย

$path = "c:\test\"
$filename = "website.txt"

$url = "https://url.retail.publishedprices.co.il/login"
$url2 = "https://url.retail.publishedprices.co.il/file/d/RamiLevi/"

$ie = New-Object -com InternetExplorer.Application

$ie.visible = $true
$ie.silent = $false

$ie.navigate("$url")

while($ie.ReadyState -ne 4) {start-sleep -m 100}
if ($ie.document.url -Match "invalidcert"){
    $sslbypass=$ie.Document.getElementsByTagName("a") | where-object {$_.id -eq "overridelink"}
    $sslbypass.click()
    start-sleep -s 5
}

$ie.Document.IHTMLDocument3_getElementById("username").click()
$ie.Document.IHTMLDocument3_getElementById("username").value ='retalix'
$ie.Document.IHTMLDocument3_getElementById("password").click()
$ie.Document.IHTMLDocument3_getElementById("password").value ='12345'
$ie.Document.IHTMLDocument3_getElementById("submit").click()

start-sleep 5

$ie.navigate($url2)

start-sleep 10

$ie.Document.body.outerHTML | Out-File -FilePath $path$filename

การดำเนินการนี้ใช้เวลาประมาณ 25 วินาทีเนื่องจากการเริ่มต้นทำงานซึ่งเป็นการอนุญาตให้โหลดหน้าเว็บได้ ขึ้นอยู่กับการเชื่อมต่อของคุณคุณอาจต้องเพิ่มสิ่งเหล่านี้

หลังจากที่คุณเรียกใช้สคริปต์และมีความสุขกับผลลัพธ์คุณสามารถทำดังต่อไปนี้

เปลี่ยนสิ่งต่อไปนี้เพื่อไม่ให้ IE เปิดบนเดสก์ท็อป:

$ie.visible = $true

ไปยัง

$ie.visible = $false

และเพิ่มต่อไปนี้ในตอนท้ายของสคริปต์เพื่อให้แน่ใจว่า IE จะปิดในตอนท้าย:

$ie.quit()

หวังว่านี่จะช่วยได้


... และคุณเรียกใช้อย่างไร ;-)
Hannu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.