Почему механизировать не удалось войти на сайт ruby - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь создать аккаунт на сайте "vpnstaticip.com" с помощью mechanize. но у меня всегда есть неизвестная ошибка, что

ОШИБКА: электронная почта слишком длинная

после отправки.

Ошибка никогда не происходит в браузере

Я пытался представить без ввода и то же самое произошло 1011 *

require "mechanize"

$url = "https://vpnstaticip.com/create-account.php?trial=1"

$m =  Mechanize.new
$page1 = $m.get($url)
$form1 = $page1.form_with(:id => "pro_form1")
$form1.field_with(:name => "name").value = "name"
$form1.field_with(:name => "email").value = "me@mail.com"
$form1.field_with(:name => "country").options[217].click #United States
$form1.field_with(:name => "username").value = "Username"

$form1.checkbox_with(:name => "terms").check

$page2 = $m.submit($form1)

$file1 = open("vpnstaticip.html","w")
$file1.write($page2.parser)
$file1.close()

1 Ответ

0 голосов
/ 10 ноября 2018

Похоже, эта форма отправлена ​​js, но на самом деле механизация не работает с js

onclick="document.getElementById('pro_form1').submit();"

возможно, смена драйвера (селен или полтергейст) поможет в создании сеанса браузера Capybara.

или, как вариант, просто попытайтесь игнорировать ошибки SSL:

$m.verify_mode = OpenSSL::SSL::VERIFY_NONE

или, думаю, лучше использовать здесь запрос net-post без механизации, для меня это нормально:

url = URI("https://vpnstaticip.com/create-account.php?trial=1")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/x-www-form-urlencoded'
request.body = "name=name&email=me%2540mail.com&country=217&username=Username&terms=1&nospam=nospam&submitted=1"

response = http.request(request)
puts response.read_body

=> ERROR: Username already exists. Try different one

кроме того, я не могу воспроизвести ошибку "Email is too long", поэтому, пожалуйста, дайте мне знать, если проблема все еще сохраняется, спасибо

...