如何使用scala scraper从使用cookie的网站中删除数据?

cld4siwp  于 2023-05-29  发布在  Scala
关注(0)|答案(1)|浏览(140)

我试图从网站(https://www.notary.org/find-notary-in-pa)数据报废,但得到403(禁止).
我使用的是scala版本2.13.1,sbt版本1.2.8和库(“net.ruippeixotog”%%“scala”%“3.0.0”,“org.jsoup”%“jsoup”%“1.15.3”)。

代码:

object ScalaScraper extends App{
  val ua = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"
  val browser = new JsoupBrowser(userAgent = ua)
  val cookies:Map[String, String] = Map(
    "ASPSESSIONIDQSBCTBBT"->"...hidden...",
    "SnapABugHistory"-> "2#",
    "_gid"-> "GA1.2.21330449.1684823122",
    "_ga"-> "GA1.1.1109375111.1684582576",
    "SnapABugUserAlias"-> "%23",
    "SnapABugVisit"-> "5#1684831262",
    "_ga_HQHD139BDT"-> "JCOIme7hJX0DSttMQQc3uvRb_icNZBQvH0g2tUvLxtc-1684911558-0-Abyg2SfcN4woQn15jTpYcn/kDeufSxKdqD8uD6jsYBEdQu4mY8UIMLQDE1mUtZg3nWETRgWkY2nRUFjIDBfgCcM=",
    "__cf_bm" -> "H3NvJ691o76iMBYHNIe4CwVATgmGmjYA9lWrNHhhKTc-1684927933-0-AZGonJ9RWnTVvooeEvt+Dyfg8WuONDrKXxETWrnQdtVceatbTl0OSQX/OgyGAwGikHr7UnHrW9H4IeOzzytXqJo="
  )
  browser.setCookies("https://www.notary.org/find-notary-in-pa", cookies)
  println("useragent " + browser.userAgent)
  val doc = browser.get("https://www.notary.org/find-notary-in-pa?search=1&page=1&zip=15037&radius=20&language=16")
  println("document is {}", doc)
}

详情:

我已经添加了userAgent,这是在网站中提到的(在检查/控制台/导航器.userAgent),然后我添加了在网站中提到的cookie(在检查/网络/cookie)。然后我尝试使用browser.get(url)

错误:

useragent Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36
Exception in thread "main" org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403, URL=[https://www.notary.org/find-notary-in-pa?search=1&page=1&zip=15037&radius=20&language=16]
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:890)
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:829)
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:366)
    at net.ruippeixotog.scalascraper.browser.JsoupBrowser.executeRequest(JsoupBrowser.scala:85)
    at net.ruippeixotog.scalascraper.browser.JsoupBrowser.$anonfun$executePipeline$3(JsoupBrowser.scala:96)
    at scala.Function1.$anonfun$andThen$1(Function1.scala:85)
    at scala.Function1.$anonfun$andThen$1(Function1.scala:85)
    at net.ruippeixotog.scalascraper.browser.JsoupBrowser.get(JsoupBrowser.scala:39)
    at scalaSc$.delayedEndpoint$scalaSc$1(ScrapWithSelenium.scala:80)
    at scalaSc$delayedInit$body.apply(ScrapWithSelenium.scala:62)

我哪里做错了?我是否以正确的方式添加了userAgent和cookie,或者有其他方法可以做到这一点,以避免403?
为什么网站不允许即使在我添加了cookie后也删除数据?
任何帮助都很感激。

oogrdqng

oogrdqng1#

如果我执行一个curl,甚至使用postman向返回403的url发送一个http请求,它也会给我一个相同的状态码。如果我把这个网址放在任何浏览器(Chrome、Firefox等)中,它都能正常工作,显示网页没有任何问题。听起来可能有一些过滤器,不让你报废的网页或设置您正在使用的是不正确的。而不是直接点击带有查询字符串的url,你可以尝试转到web https://www.notary.org/find-notary-in-pa,用你想要的值(如zip=15037radius=20)填充表单,然后点击Search按钮?这可能行得通。这取决于如何配置Web。

相关问题